Einzelnen Beitrag anzeigen

xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#1

PHP to Delphi: pack() / unpack();

  Alt 17. Okt 2009, 17:07
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+<QlMB Qn0m"

In Delphi bekomme ich nur ein "5Jÿÿ" in des TMemo.


Anbei wie das fertige Paket "ausschauen" soll.


Wie komme ich nu weiter?


LG Toby
Miniaturansicht angehängter Grafiken
packet_745.png  
  Mit Zitat antworten Zitat