![]() |
Anfänger braucht Hilfe, Java nach Delphi
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:
Delphi-Quellcode:
headerSize ist grundsätzlich 4 und keyIndex 40 daher die feste Zuweisung.
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; 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.
Delphi-Quellcode:
Ebenfalls könnte ich mir vorstellen das "keyIndex := 40" nicht ganz stimmt, da der Wert in Java mit "%=" statt mit "=" übergeben wird.
x := (packetArray[t] ^ sessionkey[keyIndex]) + prevEncrypted;
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 :drunken: Grüße, MrLolli |
Re: Anfänger braucht Hilfe, Java nach Delphi
Erstmal willkommen in der DP!
Grundlegendes syntaktisches Problemchen :-) Das % in Java steht wenn ich mich nicht irre für eine modulo-Operation. In delphi heißt das ganze schlicht und ergreifend "mod". Gleiches gilt fürs ^ -> war glaube ich Xor oder? Dann versuch es einfach mal mit "xor" :-) Hoffe das hilft weiter. Ich schau mir später den rest auch noch an muss nur jetzt erstmal richtung Arbeit :-) Gruß Reli |
Re: Anfänger braucht Hilfe, Java nach Delphi
Hi und Willkommen in der DP! :hi:
Ich würde es so übersetzen: siehe nächster Post |
Re: Anfänger braucht Hilfe, Java nach Delphi
Da das Hütchen (^) in Java XOR darstellt (zumindest das was ich via Google herausbekommen habe) würde ich eher sagen es heißt so:
ausserdem würde ich mich an den allgemeinen sprachgebrauch halten und die zählschleife "t" durch "i" ersetzen. Weiterhin kann man sich die Hilfsvariable x sparen. Nicht empfehlenswert ist ausserdem das benutzen von prevEncrypted als Integer, wenn man eigentlich nur mit Bytewerten herumspielt. Daher würd ich das auch noch auf byte ändern. Was noch zu überlegen wäre (je nach logik) ist ob die Variable prevEncrypted wirklich global gebraucht wird. Wenn nicht ab in die Funktion und initialisieren :-)
Delphi-Quellcode:
Gruß
const
headerSize = 4; keyIndex = 40; var sessionKey = array of Byte; keyIndex : integer; prevEncrypted : byte; type TPacket = array of Byte; procedure encryptHeader(var packet : TPacket); var i : Integer; begin for i := 0 to headerSize - 1 do begin keyIndex := keyIndex mod Length(sessionKey); packet[i] := (packet[i] XOR sessionKey[keyIndex]) + prevEncrypted; prevEncrypted := packet[i]; Inc(keyIndex); end; end; Reli |
Re: Anfänger braucht Hilfe, Java nach Delphi
Zitat:
@Reli: Danke fürs nachbessern. :) |
Re: Anfänger braucht Hilfe, Java nach Delphi
Hallo,
danke für die Antworten und die tollen Erklärungen, habt mir sehr weiter geholfen :) Werde nachher mal versuchen den Code so umzusetzen. Grüße, MrLolli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz