Kangaxx
Mitglied
Hallo zusammen,
hätte mal ne Frage zu nem aktuellen Projekt von mir. Ich schreibe ne Komponente die das OSCAR Protokoll das z.B von ICQ verwendet wird implementiert.
Die dabei verwendeten Datenpakete werden byteweise zusammengesetzt und dann verschickt.
Jetzt ist meine Frage, wie kann ich in Delphi Variablen (z.B Strings, Integers, Dates) in einen Buffer (array of Byte) schreiben?
hatte es bis jetzt so versucht:
Das Problem ist nur, ich bekomme keine Compiler Fehler, aber nach dem ret.Free bekomme ich einen EAccessViolation Error.
Kann mir jemand sagen warum, bzw wie ich es anders machen könnte?
mfg,
Kangaxx
hätte mal ne Frage zu nem aktuellen Projekt von mir. Ich schreibe ne Komponente die das OSCAR Protokoll das z.B von ICQ verwendet wird implementiert.
Die dabei verwendeten Datenpakete werden byteweise zusammengesetzt und dann verschickt.
Jetzt ist meine Frage, wie kann ich in Delphi Variablen (z.B Strings, Integers, Dates) in einen Buffer (array of Byte) schreiben?
hatte es bis jetzt so versucht:
Code:
type BytePacket = array of BYTE;
function VarToBytePacket(Val : Variant ) : BytePacket;
var ret : TMemoryStream;
begin
ret := TMemoryStream.Create();
if VarType(Val) and varTypeMask = varDouble then ret.Write(Val,Sizeof(Double));
else if VarType(Val) and varTypeMask = varInteger then ret.Write(Val,Sizeof(Integer));
//usw. für alle benötigten Typen.
SetLength(Result,ret.Size);
Move(ret.Memory,Result,ret.Size);
ret.Free;
end;
Das Problem ist nur, ich bekomme keine Compiler Fehler, aber nach dem ret.Free bekomme ich einen EAccessViolation Error.
Kann mir jemand sagen warum, bzw wie ich es anders machen könnte?
mfg,
Kangaxx
Zuletzt bearbeitet: