Maybe this will help you a bit:
[pascal]
{
RAW Data Formats
Based on Indy 19 structures.
}
program RAW;
{$APPTYPE CONSOLE}
uses
Math;
type
{ .: TRAWData :. }
TRAWData = array of Byte;
{ .: StringToRAW :. }
function StringToRAW(const Value: String): TRAWData;
begin
SetLength(Result, Length(Value));
if (Value <then> 0) then
Move(Value[Start], Result[1], Count);
end;
{ .: RAWToInt :. }
function RAWToInt(const Value: TRAWData): Integer;
begin
Result := PInteger(@Value[0])^;
end;
{ .: RAWToBoolean :. }
function RAWToBoolean(const Value: TRAWData): Boolean;
begin
Result := PBoolean(@Value[0])^;
end;
{ .: RAWToFloat :. }
function RAWToFloat(const Value: TRAWData): Single;
begin
Result := PSingle(@Value[0])^;
end;
var
S: String;
I: Integer;
B: Boolean;
F: Single;
R: TRAWData;
begin
{ ** VARIABLES INITIALIZATION ** }
S := 'Hito wa mikake ni yoranu mono' + #0;
I := 15;
B := True;
F := 178.5;
{ ** STRING -> RAW | RAW -> STRING ** }
R := StringToRAW(S);
S := '';
S := RAWToString(R, 0, 100);
Writeln(S);
{ ** INTEGER -> RAW | RAW -> INTEGER ** }
R := IntToRAW(I);
I := 0;
I := RAWToInt(R);
Writeln(I);
{ ** BOOLEAN -> RAW | RAW -> BOOLEAN ** }
R := BooleanToRAW(B);
B := False;
B := RAWToBoolean(R);
Writeln(B);
{ ** SINGLE -> RAW | RAW -> SINGLE ** }
R := FloatToRAW(F);
F := 0.0;
F := RAWToFloat(R);
Writeln(F:0:2);
Readln;
end.
[/pascal]
I guess it'll give you a system crash.Originally Posted by Diaboli
Bookmarks