AGB  ·  Datenschutz  ·  Impressum  







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

Chr liefert Müll

Ein Thema von ddcool · begonnen am 4. Mai 2008 · letzter Beitrag vom 5. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
ddcool

Registriert seit: 8. Jun 2003
146 Beiträge
 
Delphi XE2 Architect
 
#1

Chr liefert Müll

  Alt 4. Mai 2008, 03:37
Hallo zusammen,

ich bin gerade dabei mit StrToHex und HexToStr hier aus dem Forum zu arbeiten. Dabei ist mir aufgefallen, dass diese Funktionen manchmal Müll zurückliefern.
Ich habe das Gefühl, sobald ich einen Hexwert mit Null am Anfang (also 00 - 09) übergebe, bekomme ich anstatt dem Zeichen ein #00 - #09 zurück.
Woran kann das liegen. Wäre über jede Hilfe dankbar.

Grüße

ddcool
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Chr liefert Müll

  Alt 4. Mai 2008, 04:43
Moin ddcool,

#00 bis #09 sind doch auch Zeichen, nur nicht darstellbar (das betrifft alle zeichen von 0-31dez bzw. $00-$1F)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Chr liefert Müll

  Alt 4. Mai 2008, 08:09
Moin,

insbesondere sind $#0..$#9 identisch mit #0..#9 - aus dem gleichen Grund, aus dem die ersten beiden Ziffern in allen Zahlsystemen identisch sind und aus dem du eine Zahl im Oktalsystem ohne einen Hinweis nicht von einer Zahl im Dezimalsystem unterscheiden kannst.

Freundliche Grüße
  Mit Zitat antworten Zitat
ddcool

Registriert seit: 8. Jun 2003
146 Beiträge
 
Delphi XE2 Architect
 
#4

Re: Chr liefert Müll

  Alt 4. Mai 2008, 12:04
Hmm das ist ja doof.
Das Problem ist, dass ich einen String per Blowfish + SHA-512 verschlüssle.
Danach wird der String in Hex gewandelt, um ihn per Text vernünftig verschicken zu können.
Auf der anderen Seite wird dann der Hex-String wieder in einen normalen String gewandelt und entschlüsselt.
Da ich aber bei diesen bestimmten Zeichen (die ja nich darstellbar sind) nur ein #0 - #9 als Rückwandlung bekomme, klappt die Entschlüsselung
auch nicht mehr. Was machen?


Grüße

ddcool
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Chr liefert Müll

  Alt 4. Mai 2008, 14:43
Das Problem sollte nur bestehen, wenn du irgendwo nach der Rückwandlung Hex -> String diesen String als PChar() typecastest oder nutzt. Nur dann wird die #0 als Endemarkierung interpretiert, bei einem String an sich hätte er keine Bedeutung.
  Mit Zitat antworten Zitat
ddcool

Registriert seit: 8. Jun 2003
146 Beiträge
 
Delphi XE2 Architect
 
#6

Re: Chr liefert Müll

  Alt 4. Mai 2008, 21:26
Also ich habe jetzt hier nochmal die Funktion. So mache ich das momentan. Was muss ich denn da ändern, damit mir das korrekte Ergebnis zurückgeliefert wird?

Delphi-Quellcode:
Function HexToStr(s: String): String;
Var i: Integer;
Begin
  Result:=''; i:=1;
  While i<Length(s) Do Begin
    Result:=Result+Chr(StrToIntDef('$'+Copy(s,i,2),0));
    Inc(i,2);
  End;
End;
Danke & Grüße

ddcool
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#7

Re: Chr liefert Müll

  Alt 4. Mai 2008, 22:21
Du darfst nie Strings verwenden, wenn du mit binären Daten arbeitest, da bei diesen Schluss ist, sobald #0 drin vorkommt. Nimm Delphi-Referenz durchsuchenPChar.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Chr liefert Müll

  Alt 4. Mai 2008, 22:26
Genau umgekehrt, Mario.

Die Funktion HexToStr() funktioniert, wenn der übergebene Hex-String eine gerade Länge hat. Erst die unbedachte Verwendung von AnsiString in anderen Funktionen mit implizitem oder explizitem Cast nach PChar führen zum unerwarteten Datenverlust.

Freundliche Grüße
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#9

Re: Chr liefert Müll

  Alt 4. Mai 2008, 22:29
Bei der Funktion da oben, wenn er damit einen String "decodieren" will, der eigentlich ein binärer Datenstrom ist (und so klang's mir), wird er mit String als Rückgabewert imho nicht glücklich.
  Mit Zitat antworten Zitat
ddcool

Registriert seit: 8. Jun 2003
146 Beiträge
 
Delphi XE2 Architect
 
#10

Re: Chr liefert Müll

  Alt 4. Mai 2008, 22:32
Ja nur genau das ist eben nicht der Fall,
ich übergebe ein HexString der eine gerade länge hat und zwar: C8DCC34404C32C2C606769BE4F4201
Bekomme aber bei 04 und 01 anstatt eines Zeichens nur ein #4 und #1 in den String geschrieben (so zeigt es mir der Debugger).


Grüße ddcool
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:51 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