Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit HexToDez (https://www.delphipraxis.net/84567-problem-mit-hextodez.html)

Nils_13 19. Jan 2007 19:27

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:
function TfrmMain.HexToDez(s : String) : Integer;
var c : Integer;
    l : Integer;
begin
  Val('$'+s, l, c);
  Result := l;
end;
Der Aufruf von HexToDez sieht so aus:
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;

thkerkmann 19. Jan 2007 20:08

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

Nils_13 19. Jan 2007 20:18

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.

Hawkeye219 19. Jan 2007 20:29

Re: Problem mit HexToDez
 
Hallo Nils,

die Funktion HexToDez ist fehlertoleranter als du denkst. Versuche es mal mit diesem Aufruf:

Delphi-Quellcode:
if (Copy(line, j, 4) = 'int ') then
  begin
    asd := HexToDez(Copy(line, 5, MaxInt));
    A.Lines[i] := IntToStr(asd);
  end;
Gruß Hawkeye

Nils_13 19. Jan 2007 20:33

Re: Problem mit HexToDez
 
Danke, es funktioniert endlich :)

Nils_13 20. Jan 2007 16:02

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:
 
function TfrmMain.HexToDez(s : String) : Integer;
var c : Integer;
    l : Integer;
begin
  Val('$'+s, l, c);
  Result := l;
end;
Das sollte dann endlich mein letztes Problem mit dieser Funktion gewesen sein :).

Christian Seehase 20. Jan 2007 16:06

Re: Problem mit HexToDez
 
Moin Nils,

Zitat:

Ich habe jetzt das Problem, dass mir die obengenannte Funktion 09 (Hex) in 9 (Dez) verwandelt. Wie kann man das verhinden ?
Wozu, ist doch korrekt... :gruebel:

Nils_13 20. Jan 2007 16:08

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

phXql 20. Jan 2007 16:21

Re: Problem mit HexToDez
 
Zitat:

Zitat von Nils_13
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

Schreibst du die 1 auch als 000001?? Links stehende Nullen werden normalerweise weggelassen...

Nils_13 20. Jan 2007 16:32

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.
Seite 2 von 3     12 3      

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