Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   XOR Verknüpfung, wie? (https://www.delphipraxis.net/63677-xor-verknuepfung-wie.html)

DoktorD 21. Feb 2006 15:23


XOR Verknüpfung, wie?
 
Hi!!!

Ich schreibe zur Zeit meine Diplomarbeit und brauch dringend Eure Hilfe!!!
Ich studiere leider nicht Informatik, denn dann sollte ich das können. Habe leider nur
wenige Delphi Kenntnisse. Wäre schön wenn Ihr es mir so einfach wie möglich erklären könntet.

Zu meinem Problem:

Ich muss neben einer Hauptsoftware (kein Delphiprogramm o.ä.) ein zusätzliches Nebenprogramm schreiben, welches aus einer Seriennummer die Checksumme berechnet.

Beispiel:

Der Befehl: <STX>TT? mit Checksumme: <STX>TT? cs<EOT>

Hinter dem Fragezeichen wird noch ein Leerzeichen interpretiert und dann soll die Checksumme kommen (vorher natürlich berechnet)
Um die Checksumme zu ermitteln müssen alle einzelnen Zeichen ín ASCII (HEX) umgewandelt werden und XOR verknüpft werden:

dh.: 3C XOR 02 XOR 3E XOR 54 XOR 54 XOR 3F XOR 20 = 1F
< STX > T T ? Leerzeichen

Die Seriennummer kann natürlich verschieden lang sein.
Wichtig ist auch noch, dass die Seriennummer in einem TXT Dokument hinterlegt ist und beim Start des Programms ausgelesen werden muss. Wenn die Checksumme berechnet worden ist sollte dann in ein anderes Testdokument stehen

nach dem Beispiel: <STX>TT? 1F<EOT>


Wäre cool wenn das einer von Euch hinbekommen würde


Viiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiieeelen Dank!!!!

Sharky 21. Feb 2006 15:31

Re: Ganz dringend!!! XOR Verknüpfung, wie??????
 
Hai DoktorD,

ändere bitte den Titel deines Threads!
Dringend ist hier eigentlich jede Frage. Und mit den vielen ! und ? wird keiner lust haben deinen Thread zu lesen.
Danke für dein Verständniss.

SirThornberry 21. Feb 2006 15:40

Re: Ganz dringend!!! XOR Verknüpfung, wie??????
 
wir machen hier für niemand die arbeit. Sag einfach an welcher Stelle du dort nicht weiter kommst und was du bereits selbst geschafft hast. Wenn du sagst wo du nicht weiter kommst helfen wir dir gern aber wir machen nicht die komplette arbeit für dich.

Klaus01 21. Feb 2006 15:55

Re: Ganz dringend!!! XOR Verknüpfung, wie??????
 
Warum vorher unbedingt in Hex umwandeln?

Ansonsten wirst Dir vielleicht dies hier weiterhelfen.

ord(Zeichen1) XOR ord(Zeichen2)

Grüße
Klaus

DoktorD 21. Feb 2006 19:36

Re: Ganz dringend!!! XOR Verknüpfung, wie??????
 
Sorry wenn das so rübergekommen ist.

Ich hab mein Programm jetzt soweit, dass ich einen String mit der Seriennummer habe

strSN:=123456 (Die Zahl, bzw. der String kann unterschiedlich lang sein)

wie bekomme ich denn jetzt hin, dass ich jede einzelne Ziffer in einen ASCII Code XOR verknüpfen kann.

31 xor 32 xor 33 xor 34 xor 35 xor 36 wäre dann = 7 (in HEX)

Hinweis: Ich brauche das alles in HEX

Habt Ihr dafür ne Lösung?

Christian Seehase 21. Feb 2006 19:50

Re: Ganz dringend!!! XOR Verknüpfung, wie??????
 
Moin DoktorD,

wenn ich das richtig verstanden habe, fehlen Dir nur noch die entsprechend Begriffe um das in Delphi umsetzen zu können:

Da es sich um eine unbekannte Länge handelt: For-Schleife begrenzt durch die Länge des Strings (length)
Die Zeichen erst einmal in ihren Zahlenwert umsetzen: ord
Umwandlung einer Ganzzahl in eine hexadezimale Ausgabe: IntToHex

BTW:
Wenn Du den Edit-Button in Deinem ersten Beitrag benutzt kannst Du den Titel des Threads ändern.

DoktorD 21. Feb 2006 20:00

Re: XOR Verknüpfung, wie?
 
Danke für deine Antwort. Ich weiß schon was du meinst, aber irgendwie habe ich probleme das umzusetzten

Hast du vielleicht ein Beispiel für die Schleife?

Ich muss ja irgendwie die Nummer aufspalten, d.h. aus der ganzen Ziffer einzelne machen und dann umwandeln

Was genau macht denn "ord"? Das was in der Hilfe steht verstehe ich nicht so wirklich

Christian Seehase 21. Feb 2006 20:05

Re: XOR Verknüpfung, wie?
 
Moin DoktorD,

Du kannst jedes Zeichen des Strings einzeln ansprechen.
Um mal bei Deinem Beispiel zu bleiben:

strSN[3]

spricht das dritte Zeichen an, und statt eines festen Wertes nimmst Du den Schleifenzähler der for-Schleife.
Mit

ord(strSN[3]) bekommst Du dann den Zahlenwert, den das Zeichen an der dritten Stelle repräsentiert.

DoktorD 21. Feb 2006 20:07

Re: XOR Verknüpfung, wie?
 
Cool Danke. Ich probiere es gleich mal aus

Klaus01 21. Feb 2006 20:42

Re: XOR Verknüpfung, wie?
 
Delphi-Quellcode:
function checksum(SNr:String):String;
  VAR
    i:Byte;
    dummy:Byte;
begin
  dummy:=ord(SNr[1] XOR ord (SNr[2]);

  for i:=3 to length(SNr) DO
    begin
      dummy:=dummy XOR ord(SNr[i]);
    end;

  result := IntToHex(dummy);
end;
ungetestet aber sollte so gehen.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.
Seite 1 von 4  1 23     Letzte »    

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