Code:
function SingleToRaw(vSI: Single): String;
var
  S: Array[0..3] of Char;
  p : pointer;
  I: Integer;

begin
  p := @vSI;
  move(byte(p^),S[0],4);
  for I := 3 downto 0 do
    singletoraw:= singletoraw+S[I];
end;
... this works. but i encourage you to write an assembler-version that works :) ... and look up the x86-registers! *gg*

edit: whoops, didn't realize the answers before mine. it's too early xDD