Delphi-PRAXiS
Seite 1 von 3  1 23      

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 18. Jan 2007 15:59


Problem mit HexToDez
 
Hi,

ich muss Hex nach Dez umwandeln und habe diese Funktion dafür:
Delphi-Quellcode:
function TfrmMain.HexToDez(s : String) : Integer;
var c : Integer;
    l : Integer;
begin
  Val(s, l, c);
  Result := l;
end;
Problem ist nur, dass diese Funktion $A, $B, $C, $D, $E und $F, statt A, B, C, D, E und F erwartet. Wie kann man in einem String vor die Fundstelle von allen im String vorkommenden Buchstaben ein $ setzen, ohne irgendwelche Zeiche zu löschen ? Beispiel:
9C
wird zu:
9$C

Delphi-Quellcode:
for m := 1 to Length(convert) do
begin
  if (convert[i] = 'A') or (convert[i] = 'B') or (convert[i] = 'C') or (convert[i] = 'D') or (convert[i] = 'E') or (convert[i] = 'F') then
 --> was muss hier hin ? <-- 
end;
Ich steh gerade total auf dem Schlauch....

sirius 18. Jan 2007 16:09

Re: Problem mit HexToDez
 
wir wärs damit:
Delphi-Quellcode:
function TfrmMain.HexToDez(s : String) : Integer;
var c : Integer;
    l : Integer;
begin
  Val('$'+s, l, c);
  Result := l;
end;
Edit: Ah, ich verstehe dein Problem.

Hexadezimale Zahlen werden (in Delphi) so geschrieben:
$3F = $3f = 3*16+15 = 63
$6 = 6
$A = 10
$1AF4 = 1*4096 + 10*256 + 15*16 + 4 = 6900

Da gibts nicht for jedem Buchstaben ein "$", nur eins am Anfang.

Nils_13 18. Jan 2007 16:12

Re: Problem mit HexToDez
 
Auf die Idee bin ich auch schon gekommen, aber wenn der String 9C wäre, würde er dann $9C umrechnen. Das geht natürlich nicht.

3_of_8 18. Jan 2007 16:14

Re: Problem mit HexToDez
 
Wo ist das Problem?

Nils_13 18. Jan 2007 16:19

Re: Problem mit HexToDez
 
@sirius:
Dein Code müsste laut deinem Edit dann doch funktionieren. Er liefert bei 9C aber 0 zurück.

Fehler lag auf meiner Seite, sry.

sirius 18. Jan 2007 16:22

Re: Problem mit HexToDez
 
Zitat:

Zitat von Nils_13
@sirius:
Dein Code müsste laut deinem Edit dann doch funktionieren. Er liefert bei 9C aber 0 zurück.

funktioniert bei mir einwandfrei:

Delphi-Quellcode:
function hextodez(s:string):integer;
var l,c:integer;
begin
  val('$'+s,l,c);
  result:=l;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  memo1.lines.add(inttostr(hextodez('9C')));
end;
-->156

Nils_13 18. Jan 2007 16:23

Re: Problem mit HexToDez
 
Sry, hatte da irgendwo einen Fehler drinnen, behoben. Thx.

Christian Seehase 18. Jan 2007 18:10

Re: Problem mit HexToDez
 
Moin Nils,

warum nimmst Du nicht

Delphi-Quellcode:
StrToInt
:gruebel:

Nils_13 18. Jan 2007 18:25

Re: Problem mit HexToDez
 
Das kann es auch, ich weiß.... Ich will aber irgendwie eine Übersicht in meinem großen Projekt und sofort sehen, was was ist. StrToInt macht für mich gedanklich die 1:1-Umstezung von Str zu Int und nicht Hex, deshalb.

Christian Seehase 18. Jan 2007 19:01

Re: Problem mit HexToDez
 
Moin Nils,

ja und?
Dann ruf es doch in Deiner Funktion HexToDez auf ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.
Seite 1 von 3  1 23      

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