Hallo liebe Delphi-Praxis Mitglieder,
ich beschäftige mich seit einigen Wochen mit Delphi, und bräuchte Hilfe bei der Übersetzung eines kleinen Code-Schnippsels.
Zitat:
private int headerSize, keyIndex, prevEncrypted;
private byte[] sessionKey;
...
public void encryptHeader(byte[] packet)
{
for (int t = 0; t < headerSize; t++)
{
keyIndex %= sessionKey.length;
uint8 x = (packet[t] ^ sessionKey[keyIndex]) + prevEncrypted;
++keyIndex;
prevEncrypted = x;
packet[t] = x;
}
}
Was ich bisher habe:
Delphi-Quellcode:
procedure EncryptHeader(var packet, len: Integer);
var
t, keyIndex, prevEncrypted: Integer;
packetArray: Array of Byte;
begin
SetLength(packetArray, len);
move(packet, packetArray[1], len);
for t := 1 to 4 do
begin
keyIndex := 40;
x := (packetArray[t] ^ sessionkey[keyIndex]) + prevEncrypted;
keyIndex := keyIndex + 1;
prevEncrypted := x;
packetArray[t] := x;
end;
end;
headerSize ist grundsätzlich 4 und keyIndex 40 daher die feste Zuweisung.
Bei folgender Zeile komme ich nicht weiter, weil mir der Delphi Compiler meldet
[DCC Fehler] Unit1.pas(296): E2017 Zeigertyp erforderlich
Ich habe mich mit Zeigern bisher eigentlich gar nicht befasst, und wüsste nun nicht was ich hier ändern soll.
x := (packetArray[t] ^ sessionkey[keyIndex]) + prevEncrypted;
Ebenfalls könnte ich mir vorstellen das "keyIndex := 40" nicht ganz stimmt, da der Wert in Java mit "%=" statt mit "=" übergeben wird.
Habe nun schon Nächte gegrübelt, aber komme bei dieser einen Funktion nicht weiter.
Bitte habt etwas Erbarmen mit einen Delphi-Anfänger, habe gleich ein etwas umfangreicheres Projekt zum Lernen gestartet
Grüße,
MrLolli