Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hex to String (https://www.delphipraxis.net/111813-hex-string.html)

XXcD 9. Apr 2008 17:50


Hex to String
 
Hallo,
ich versuche gerade Hexwerte in Strings umzuwandeln.
Folgendes habe ich bisher ausprobiert:

Delphi-Quellcode:
function HexStringToStr(s : string):string;
begin
  if s = '' then
    Result := ''
  else
  begin
    if Odd(length(s)) then
      s := '0'+s;
    SetLength(Result, Length(s) div 2);
    HexToBin(Pchar(s), PChar(Result), Length(Result));
  end;
end;

Procedure TForm1.Button1Click(Sender: TObject)
begin
HexStringToStr('01010005200B000D600200000100012806050000000205000D6002000101000560');
end;
Sowas kommt dabei raus: 

Was mache ich falsch?

DeddyH 9. Apr 2008 17:57

Re: Hex to String
 
:wiejetzt: Ein Hexwert ist nur eine Darstellungsform einer Zahl. Stellst Du sie $FF dar, ist dies bereits ein String.

XXcD 9. Apr 2008 17:59

Re: Hex to String
 
???

Ich verstehe nicht ganz, ich weiß nicht was das damit zu tun hat.
Ich möchte gerne den gesammten string aus Hex werten umwandeln.
Normalerweise müsste da ein kommpletter Satz rauskommen.

Und ich habe noch herausgefunden, dass wenn man die Hexwerte einzeln umwandelt dann funkioniert es.

HexStringToStr('01');
HexStringToStr('01');
HexStringToStr('00');
HexStringToStr('05');
usw..

Aber ich brauche das ja in einem String.

DeddyH 9. Apr 2008 18:02

Re: Hex to String
 
Und welcher Satz?

Dax 9. Apr 2008 18:03

Re: Hex to String
 
"010100" wäre #1#1#0, was - in einem Windows-Control ausgegeben - zwei komischen Zeichen entspricht. Offensichtlich stimmt der Algorithmus, aber die Eingaben sind falsch ;)

XXcD 9. Apr 2008 18:05

Re: Hex to String
 
Also ich habe jetzt etwas kleines zusammen gebastelt, aber das funktioniert nicht richtig.
Also wo der Fehler jetzt ist weiß ich, aber wie kann ich das anders machen?

Delphi-Quellcode:
function hexinstring(d : string): string;
var
  I, s: Integer;
  t, n, y: string;
begin
s:=1;
for I := 1 to length(d) div 2 do
begin
 n:= copy(d, s, 2);
 y:=HexStrToString(n);
 t:=t+y; <--- hier liegt wohl der Fehler
s:= I * 2 + 1;
end;
Result:= t;
end;

Muetze1 9. Apr 2008 21:21

Re: Hex to String
 
Ich denke nicht, dass der Fehler dort liegt. Dax hat vollkommen Recht mit seinem Beitrag zuvor. Dein Hexadezimaler Eingabestring enthält definitiv keine Zeichenkodes. Schau dir mal die Signatur von mir an, da sieht man doch auf Anhieb, dass die Zeichenkodes deutlich grösser sind - das ergibt auch richtige Zeichen.

XXcD 9. Apr 2008 22:29

Re: Hex to String
 
Ok habe es jetzt hibekommen, der Hexwert war auch richtig(ist halt nur nen Beispiel gewesen),
aber wie kann ich die Funktion so umschreiben, dass die auch den HexWert 00 mit umwandelt.
Der wird nämlich einfach rausgeschnitten.

turboPASCAL 9. Apr 2008 22:33

Re: Hex to String
 
Zitat:

Zitat von Muetze1
49 63 68 20 68 61 62 65 20 6B 65 69 6E 65 20 41 68 6E 75 6E 67 20 21

44 61 73 20 67 6C 61 75 62 65 20 69 63 68 20 64 69 72 20 6E 69 63 68 74 20 !

Zitat:

Zitat von XXcD
aber wie kann ich die Funktion so umschreiben, dass die auch den HexWert 00 mit umwandelt.
Der wird nämlich einfach rausgeschnitten.

Nein, nur nicht angezeigt in deinem Memo oder was auch immer.

Dani 9. Apr 2008 22:41

Re: Hex to String
 
Was ist denn nach deiner Auffassung das richtige Ergebnis für den Wert 00? :|


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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz