![]() |
Re: Problem mit HexToDez
Ich habe ein riesen Problem:
4C --> 76 korrekt 21 --> 0 falsch 0C --> 0 falsch Der Code hat sich nicht geändert:
Delphi-Quellcode:
Der Aufruf von HexToDez sieht so aus:
function TfrmMain.HexToDez(s : String) : Integer;
var c : Integer; l : Integer; begin Val('$'+s, l, c); Result := l; end;
Delphi-Quellcode:
if Copy(line, j, 4) = 'int ' then
begin tmp := Trim(Copy(line, j+4, MaxInt)) + ' '; k := 1; while tmp[k] in ['0'..'9', 'A'..'F', 'a'..'f'] do inc(k); line := Copy(line, 1, j+3) + Copy(Tmp, 1, k-1); asd := HexToDez(line); A.Lines[i] := IntToStr(asd); end; |
Re: Problem mit HexToDez
Hi,
schon mal ausgegeben, was reingeht nach hextodex ? Diese "line" sieht mir etwas komisch in der Zusammenstellung aus. Aus diesem Code-Fragment ist nicht vollständig zu entnehmen, was du da zusammenkopierst, insbesondere der erste Teil. Gruss |
Re: Problem mit HexToDez
In line steht (kA warum) int 21. Vlt. liegt es daran, aber ich weiß nicht, warum die Konvertierung trotzdem schiefläuft, denn i, n und t gibt es in Hex nicht.
|
Re: Problem mit HexToDez
Hallo Nils,
die Funktion HexToDez ist fehlertoleranter als du denkst. Versuche es mal mit diesem Aufruf:
Delphi-Quellcode:
Gruß Hawkeye
if (Copy(line, j, 4) = 'int ') then
begin asd := HexToDez(Copy(line, 5, MaxInt)); A.Lines[i] := IntToStr(asd); end; |
Re: Problem mit HexToDez
Danke, es funktioniert endlich :)
|
Re: Problem mit HexToDez
Hi,
da es immer noch um die selbe Funktion geht, poste ich einfach wieder hier ein (leider :(). Ich habe jetzt das Problem, dass mir die obengenannte Funktion 09 (Hex) in 9 (Dez) verwandelt. Wie kann man das verhinden ? Ich habe bisher versucht, einfach alle Nullen durch irgendein Zeichen, außer A-F oder 0-9 zu ersetzen und diese verwandelte Nullen am Ende wieder zu Nullen zu machen, hat nicht funktioniert, da l leider Integer sein muss und die Zurückwandlung nicht funktionieren kann (auch mit IntToStr oder StrToInt nicht). Wer sie nochmal sehen will:
Delphi-Quellcode:
Das sollte dann endlich mein letztes Problem mit dieser Funktion gewesen sein :).function TfrmMain.HexToDez(s : String) : Integer; var c : Integer; l : Integer; begin Val('$'+s, l, c); Result := l; end; |
Re: Problem mit HexToDez
Moin Nils,
Zitat:
|
Re: Problem mit HexToDez
Natürlich ist das korrekt, aber wenn ich das weiter nach Binär konvertieren würde, würde dann die 0 schwer ins Gewicht fallen, weil diese dann dort einfach fehlt. Mag heißen:
9 = 1001 09 = 00001001 |
Re: Problem mit HexToDez
Zitat:
|
Re: Problem mit HexToDez
Du hast es nicht verstanden: das ist 8-bit, nicht 4-Bit.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 Uhr. |
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