Forum: Object-Pascal / Delphi-Language
Delphi
by MarLe,
23. Mär 2006
Hätte ich jetzt auch gedacht. Aber
Result := IntToHex(LoWord(aValue), 2);
liefert bei -40 $FFD8
Forum: Object-Pascal / Delphi-Language
Delphi
by MarLe,
23. Mär 2006
Vielen Dank, funktioniert.
Wie haut das bei 2- bzw. 8 stelligen Hex-Werten hin.
Hängt das Ergebnis der Funktion val() von der Deklaration der Variablen ab?
(SmallInt, ShortInt bzw. LongInt)
Forum: Object-Pascal / Delphi-Language
Delphi
by MarLe,
23. Mär 2006
Die Funktionen rechnen nur bei negativen Werten richtig.
Hex2Dec:
$55C8 -> 43576 falsch
$007F -> 65409 falsch
$0001 -> 65535 falsch
$FFFF -> -1 richtig
$FFF0 -> -16 richtig
Dec2Hex:
Forum: Object-Pascal / Delphi-Language
Delphi
by MarLe,
23. Mär 2006
Das ganze funktioniert auch nicht richtig wenn ich den Hex-Wert
über ein Eingabefeld (TEdit) übergebe:
sHex := '$93E0'; // ergibt -27680
sHex := EditsHex.Text; // eine Eingabe von $93E0 ergibt 37856 ?!?
Sorry, funktioniert schon, aber nur bei negativen Werten (siehe nächsten Beitrag)
Forum: Object-Pascal / Delphi-Language
Delphi
by MarLe,
23. Mär 2006
Vielen Dank - funktioniert perfekt
Forum: Object-Pascal / Delphi-Language
Delphi
by MarLe,
23. Mär 2006
@Sharky
Das war auch mein Gedanke, Danke für die Bestätigung.
Dein Code funktioniert richtig
showmessage(inttostr(iDez)); // ergibt -27680
Hast du vielleicht auch noch gleich eine Lösung für den umgekehrten Weg,
von Dezimal nach Hex im Zweierkomplement?
Forum: Object-Pascal / Delphi-Language
Delphi
by MarLe,
23. Mär 2006
var sHex: string;
iDez: smallint;
begin
sHex:='$93E0';
iDez:=StrToInt(sHex);
ShowMessage(IntToStr(iDez));
end;
... haut nicht hin.
Meldung: Konstantenausdruck verletzt untere Grenze
Forum: Object-Pascal / Delphi-Language
Delphi
by MarLe,
23. Mär 2006
Ich erwarte ein negatives Ergebnis.
@chrisw
$93E0 ergibt nicht 37856 sonder in der Zweierkomplement-Darstellung -27680 !!!
@Hawkeye219
Vom Wertebereich würde es passen.
SmallInt 16Bit mit Vorzeichen von +32767/-32768
Ich probier mal den Vorschlag von @marabu
Forum: Object-Pascal / Delphi-Language
Delphi
by MarLe,
23. Mär 2006
... und umgekehrt.
var sHex: string;
iDez: integer;
begin
sHex:='$93E0';
iDez:=StrToInt(sHex);
end;
... funktioniert bei der Darstellung im Zweierkomplement nicht
weil z.B. $93E0 = -27680 ergibt.