N'Abend zusammen,
Versuche gerade einen PHP in Delphi zu kopieren, jedoch scheitere ich an der
pack(); mathode von PHP.
Folgend der PHP Code:
Code:
$sOutput = pack(
"nvCCCCv",
$this->wMagic,
$this->wHash,
$this->byVersion,
$this->byPacketType,
$this->byRequestType,
$this->byUnknown0x00,
$this->wFieldCount
);
Ich habe es nach einschlägiger Suche mal so probiert:
Delphi-Quellcode:
rData := TStringStream.Create('');
try
rData.Position:= 0;
rData.Write(rPacketHeader.wMagic, SIZEOF(WORD));
rData.Write(rPacketHeader.wHash, SIZEOF(WORD));
rData.Write(rPacketHeader.byVersion, SIZEOF(BYTE));
rData.Write(rPacketHeader.byPacketType, SIZEOF(BYTE));
rData.Write(rPacketHeader.byUknown0x00, SIZEOF(BYTE));
rData.Write(rPacketHeader.wFieldCount, SIZEOF(WORD));
if rPacketHeader.byPacketType = AA3_PACKET_TYPE_FRAGMENTED_RESPONSE then begin
rData.Write(rPacketHeader.wOrder, SIZEOF(WORD));
rData.Write(rPacketHeader.wTotal, SIZEOF(WORD));
end;
Result := rData.DataString + rPacketHeader.sData;
finally
rData.Free;
end;
Aber in PHP habe ich 31 Byte, in delphi nur 30... da fehlt ein Byte!
Und auch der Binary String ist komplett anders:
PHP etwa: "J5ÿÿ���i<aCg+<QlMBQn0m"
In Delphi bekomme ich nur ein "5Jÿÿ" in des TMemo.
Anbei wie das fertige Paket "ausschauen" soll.
Wie komme ich nu weiter?
LG Toby