AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Anfänger braucht Hilfe, Java nach Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Anfänger braucht Hilfe, Java nach Delphi

Ein Thema von MrLolli · begonnen am 5. Aug 2008 · letzter Beitrag vom 5. Aug 2008
Antwort Antwort
MrLolli

Registriert seit: 5. Aug 2008
8 Beiträge
 
#1

Anfänger braucht Hilfe, Java nach Delphi

  Alt 5. Aug 2008, 03:51
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
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Anfänger braucht Hilfe, Java nach Delphi

  Alt 5. Aug 2008, 06:33
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
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Anfänger braucht Hilfe, Java nach Delphi

  Alt 5. Aug 2008, 06:40
Hi und Willkommen in der DP!

Ich würde es so übersetzen: siehe nächster Post
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Anfänger braucht Hilfe, Java nach Delphi

  Alt 5. Aug 2008, 07:41
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:
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;
Gruß
Reli
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Anfänger braucht Hilfe, Java nach Delphi

  Alt 5. Aug 2008, 07:54
Zitat von Relicted:
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
Vermutlich ist das ganze sowieso eine Klasse und da sind es wahrscheinlich private Variablen der Klasse.

@Reli: Danke fürs nachbessern.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
MrLolli

Registriert seit: 5. Aug 2008
8 Beiträge
 
#6

Re: Anfänger braucht Hilfe, Java nach Delphi

  Alt 5. Aug 2008, 14:22
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz