Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Fehlermeldung bei der Funktion IntToHex
Bomania - Sa 15.02.03 22:02
Titel: Fehlermeldung bei der Funktion IntToHex
Fehlermeldung:
"Es gibt keine überladene Version von 'IntToHex', die man mit diesen Argumenten aufrufen kann"
Was hab ich da falsch gemacht? Die Hilfe hilft mir nicht...
Edit: Bei der Variablen handelt es sich um ein String mit einer Länge von einem Zeichen.
Bomania - Sa 15.02.03 22:08
Ah, diesmal habe ich zu schnell aufgegeben...habe den Fehler gefunden...
Christian S. - Sa 15.02.03 22:08
Ist die gleiche Fehlermeldung wie bei dem Beispiel zu IntToHex, welches sich in meiner Delpi-Hilfe befindet: da ist der erste Parameter ein String, was aber nicht sein darf. Ich nehme an, das ist auch Dein Fehler, oder?
Bomania - Sa 15.02.03 22:18
Genau dieses :idea:
Bomania - So 16.02.03 11:26
Wie aber konvertiert man Hex zu Int?
BungeeBug - So 16.02.03 12:00
Also eine Möglichkeit die mir Google offengelegt hat ist
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| Einen Hex-String in Integer umwandeln
function HexStrToInt(HexStr: String): LongInt; // Hexadezimale Strings werden in Integer verwandelt var x : Byte; // FOR-Schleife y : Byte; // Exponenten-Zähler (da letzte Ziffer = 16^0, davor 16^1 ..) begin Result := 0; y := 0; for x := Length(HexStr) downto 1 do begin case StrToIntDef(HexStr[x], 99) of 0..9: Result := Result + Trunc(SqrX(16, y)) * StrToInt(HexStr[x]); end; case HexStr[x] of 'A', 'a' : Result := Result + Trunc(SqrX(16, y)) * 10; 'B', 'b' : Result := Result + Trunc(SqrX(16, y)) * 11; 'C', 'c' : Result := Result + Trunc(SqrX(16, y)) * 12; 'D', 'd' : Result := Result + Trunc(SqrX(16, y)) * 13; 'E', 'e' : Result := Result + Trunc(SqrX(16, y)) * 14; 'F', 'f' : Result := Result + Trunc(SqrX(16, y)) * 15; '0'..'9' : // Dummy-Anweisung, damit 0..9 nicht als unzulässige Zeichen zählen else begin // HexStr enthält unzulässiges Zeichen (A..F, 0..9) Result := -1; exit; end; // else end; // case Inc(y); end; // for end; // Prozedur |
der Code ist NICHT getestet!
MfG BungeeBug
Brueggendiek - Mo 17.02.03 04:09
Hallo!
Um einen Hex-String in einen Interger umzuwandeln, kann man ganz einfach StrToInt benutzten. Allerdings darf man nicht vergessen, der Funktion mitzuteilen, dass es sich um einen Hex-String handelt. Dazu wird einfach ein '$' vor den String gesetzt - genauso wie man auch Hex-Zahlen im Source angeben kann!
Quelltext
1:
| zahl:=StrToInt('$'+satz); |
Mit TRY_EXCEPT kann man auch noch ungültige Eingaben abfangen bzw. mit StrToIntDef einen Ersatzwert festlegen.
Alternative: Mit Val arbeiten, da erhält man sogar die Position des ungültigen Zeichens im String!
Gruß
Dietmar Brüggendiek
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!