AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XOR Verknüpfung, wie?

Ein Thema von DoktorD · begonnen am 21. Feb 2006 · letzter Beitrag vom 31. Jul 2006
Antwort Antwort
Seite 2 von 4     12 34      
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#11

Re: XOR Verknüpfung, wie?

  Alt 21. Feb 2006, 22:16
Also ich bin nun fast fertig. Nur die Ergebnisse hauen noch nicht so hin

wieso kann ich denn nicht
Delphi-Quellcode:
  
  vString:=GetString();
  strSN:=GrobPath1(vString);
  intSN:=StrToInt(strSN);
  Ergebnis:= IntToHex(ord(intSN[1]),2) xor IntToHex(ord(intSN[2]),2)....
  WriteString();
  Checksum:=IntToHex(Ergebnis,2);
Wieso bringt der da einen Fehler? Irgendsoetwas mir Array.

Wichtig ist, dass ich den die Zahl(123456) die ja ein String ist in die einzelnen Ziffern aufteilt und dann diese einzelnen Ziffern in einen Hexwert(Ascii) umwandelt und dann xor verknüpfe.

Habt Ihr da ne Lösung?
  Mit Zitat antworten Zitat
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#12

Re: XOR Verknüpfung, wie?

  Alt 21. Feb 2006, 22:17
Danke Klaus!
  Mit Zitat antworten Zitat
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#13

Re: XOR Verknüpfung, wie?

  Alt 21. Feb 2006, 22:26
Bei

result := IntToHex(dummy);

zeigt er den Fehler

"Es gibt keine überladene Funktion von IntToHex, die man mit diesen Argumenten aufrufen kann"

Was bedeutet das? Geht das garnicht?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#14

Re: XOR Verknüpfung, wie?

  Alt 21. Feb 2006, 22:47
das bedeutet das deine parameterliste nicht mit der übereinstimmt die erwartet wird (du übergibst einen parameter zu wenig)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 07:13
uups
  result := IntToHex(dummy,2); ein Byte liefert zwei Digits zurück.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#16

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 07:14
OK. Probiere es nochmal. Dank Dir!!!
  Mit Zitat antworten Zitat
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#17

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:00
Vielen Dank Klaus01. Das mit der Seriennummer klappt schon.

Aber die Seriennummer alleine ergibt nicht alleine die Checksumme.

Die komplette Checksumme wird aus

<STX>OWE_509_Seriennummer_ _ steht für Leerzeichen (in Hex=20)

HEX
O = 4F
W = 57
E = 45
_ = 20
5 = 35
0 = 30
9 = 39
_ = 20
Seriennummer
_ = 20


Das OWE_509_ bleibt ja immer gleich. Aber wie kann ich das in diese Schleife mit einbringen? Oder gibts da ne andere Möglichkeit?

Danke für alles!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#18

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:05
Zitat von DoktorD:
.... Das OWE_509_ bleibt ja immer gleich. Aber wie kann ich das in diese Schleife mit einbringen? ...
Hai DoktorD,

entweder übergiebst Du das "OWE 509 " immer mit an die Funktion oder Du baust es dort einfach ein:
Delphi-Quellcode:
function checksum(SNr:String):String;
VAR
  i:Byte;
  dummy:Byte;
begin
  SNr := 'OWE 509 ' + SNr; // OWE__509_ wird vor jede Seriennummer gesetzt.
  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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:07
Die Routine von Klaus versagt bei Strings mit einer Länge von weniger als 2 Zeichen:
Delphi-Quellcode:
Function CheckSum (Const aString : String) : String;
Var
  i : Integer;
  
Begin
  If Length (aString)=0 Then
    r := 0
  Else Begin
    r := Ord (aString[1]);
    For i:=2 To Length (aString) Do
      r := r xor Ord (aString[i]);
    End;
  Result := IntToHex (r,2);
End;
Auch wenn der Fall bei Dir vielleicht nicht auftritt, irgendwann willst du die Routine vielleicht nochmal verwenden, und spätestens dann hast Du vergessen, das sie nicht uneingeschränkt funktioniert.

Ich implementiere solche Basisfunktionen immer so, das sie immer zu einem Ergebnis führen. Dann bin ich auf der sicheren Seite und ich habe mindestens einen Fehler weniger

@Klaus01: Übergebe einfach das gesamte Telegram (ab dem <STX>), dann wird doch auch die komplette checksum gebildet.

Bist du Dir Sicher, das Du die Checksumme in Hex brauchst?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#20

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:12
Hai alzaimer,

wo kommt denn in deiner Funktion das r her?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 22:23 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