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 3 von 4     123 4      
Klaus01

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

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:13
Zitat:
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).... // geht so nicht!
  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?
IntToHex liefert Dir einen String mit den HexDigits und nicht den Ascii-Wert des Zeichens.
Aus der Hilfe:
Zitat:
function IntToHex(Value: Integer; Digits: Integer): string; overload;
Um die Zeichen mit XOR zu verknüpfen müssen diese in ihrem Ascii Wert verknüpft werden
Aus der Hilfe:
Zitat:
xor bitwise xor integer integer X xor Y
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
DoktorD

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

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:15
So wie du es jetzt vorschlägst hatte ich es auch gedacht.
Aber die Leerzeichen (0x20) und das <STX> (0x02) gehen ja auch zu Checksummen Berechnung ein.
Funktioniert das dann auch?

Die CS brauche ich in HEX. Das kann ich leider nicht ändern
  Mit Zitat antworten Zitat
Klaus01

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

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:22
in dem Code vom Sharky werden die Leerzeiche auch mit XOR verknüpft, denn
sie werden ja nirgends ausgefiltert.


Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
DoktorD

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

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:24
OK. Mit den Leerzeichen das funktioniert. Ich brauch jetzt nur noch das <STX> mit in die Berechnung einfließen zu lassen.

Schaut mal unter

http://www.torsten-horn.de/techdocs/ascii.htm

da steht bei STX : STX^B

Kann ich das so einfach reinschreiben?

oder kann ich auch "ord(<STX>)" nehmen. Geht das überhaupt?
  Mit Zitat antworten Zitat
Klaus01

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

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:31
Hier der angepasste Code vom alzaimar
wenn Du STX als Startwert nimmst, wird STX auch in der Checksummer auftauchen.

Grüße
Klaus

Delphi-Quellcode:
Function CheckSum (Const aString : String) : String;
Var
  i : Integer;
  r :Byte;
  
Begin
  If Length (aString)=0 Then
    r := 0
  Else Begin
     
    r := 2; //STX ^B
    For i:=1 To Length (aString) Do
      r := r xor Ord (aString[i]);
    End;
  Result := IntToHex (r,2);
End;
Klaus
  Mit Zitat antworten Zitat
DoktorD

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

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 08:49
Es funktioniert.

Vielen, vielen Dank an alle, die mir geholfen haben. Ich ziehe den Hut vor Euch!!!!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

Re: XOR Verknüpfung, wie?

  Alt 22. Feb 2006, 09:02
Zitat von DoktorD:
Es funktioniert.
Hai DoktorD,

einen kleinen Tipp habe ich noch. Versuche solche Funktionen ersteinmal allgemein zu halten und dann in einer zweiten Funktion die besonderen Randbedingungen vorzugeben. Dadurch ereichst Du eine höhere Wiederverwendbarkeit deines Codes:
Zum Beispiel:
Delphi-Quellcode:
function CheckSumFromString(const aString: String): Integer; // Allgemeine Checksummenbildung über einen String
var
  i: Integer;
  r: Integer;
begin
  if Length(aString) = 0 then
  begin
    r := 0;
  end
  else
  begin
    r := Ord(aString[1]);
    for i := 2 to Length(aString) do
    begin
      r := r xor Ord(aString[i]);
    end;
  end;
  Result := r;
end;

function CalcMyCheckSum(const aString: String): String; //Mit dem Randbedingungen
const
  stx = #2;
  praefix = 'OWE 509 ';
begin
  Result := IntToHex(CheckSumFromString(stx + praefix + aString), 2);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  blubb: String;
begin
  blubb := CalcMyCheckSum('12346579');
  ShowMessage(blubb);
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
DoktorD

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

Re: XOR Verknüpfung, wie?

  Alt 23. Feb 2006, 10:38
Zu früh gefreut.

Das Programm welches in das Textfile, welches ich auslesen will, sperrt anscheinend diese Datei.
Klappt das wenn ich das mit diesem fmOpenRead löse?? Ich hab keine Ahnung, wie das geht.

Zur Zeit mache ich das so

Delphi-Quellcode:
function TForm1.GetString():String;
var
  F1: TextFile;
  Text: String;
begin
    try
      AssignFile(F1, sText1);
      Reset(F1);
      while not Eof(F1) do
        begin
          Read(F1, Text);
        end;
      CloseFile(F1);
      result := Text;
    except
      ShowMessage('Fehler beim auslesen der Textdatei');
    end;
end;
Danke!
  Mit Zitat antworten Zitat
Klaus01

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

Re: XOR Verknüpfung, wie?

  Alt 23. Feb 2006, 10:57
uups hab auf etwas anderes geantwortet.

Zitat:
das ich IMHO auch völlig korrekt.

1 Byte 0- 255 in Hex 0 - FF

Ein Digit in Hex entsprechen 4 Bit (1 Nibble) und können Werte von 0 bis F annehmen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Klaus01

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

Re: XOR Verknüpfung, wie?

  Alt 23. Feb 2006, 11:06
.. das hängt wohl davon ab in welchem Modi das andere Programm die Datei geöffnet hat.

Wenn die andere Datei geöffnet ist, kannst Du aber immer noch ein Kopie davon erstellen
und aus dieser lesen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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:41 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