![]() |
Hexadezimale Zahl in Registry speichern
Guten Abend allerseits,
ich versuche gerade verzweifelt eine Zahl 1031 als hexadezimale Zahl in die Registry zu schreiben. Mit WriteInteger('Test', StrToInt(IntToHex(1031, 1))); wird lediglich 7 gespeichert, aber nicht die erhoffte Zahl 407. Woran kann das liegen? |
AW: Hexadezimale Zahl in Registry speichern
An der Eins?
z.B. wäre "1031,4" brauchbar. aber verate uns doch einmal was diese Hinundherkonvertierung soll:
Delphi-Quellcode:
Gruß
StrToInt(IntToHex(1031, 1));
K-H |
AW: Hexadezimale Zahl in Registry speichern
WriteInteger verlangt einen Integer und IntToHex liefert einen String. Daher StrToInt.
|
AW: Hexadezimale Zahl in Registry speichern
und warum schreibst Du nicht einfach 1031....
|
AW: Hexadezimale Zahl in Registry speichern
Es geht hier genau gesagt um die Sprach-IDs.
Deutsch hat da die 407. Durch folgende Funktion erhalte ich dann 1031, dezimal nehme ich an. Ich brauchre aber die 407.
Delphi-Quellcode:
var
txt : string; langid : word; begin langid := MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_DOMINICAN_REPUBLIC); SetLength (txt,MAX_PATH); SetLength (txt, VerLanguageName(langid,@txt[1],length(txt))); ShowMessage(txt); end; ![]() |
AW: Hexadezimale Zahl in Registry speichern
Folgende Varianten stehen zur Auswahl
Delphi-Quellcode:
Variante A und B machen genau das Gleiche.
WriteInteger('Test', 1031); // A
WriteInteger('Test', $407); // B WriteString('Test', Format('%x', [1031]); // C Variante C schreiben den Wert 1031 als hexdezimalen string. Ach ja, du sollst uns nicht erzählen was du über deinen eigenen Code denkst sondern sag uns lieber den kompletten Key (z.B. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\W32Time\Config) innerhalb der Registry und warum und weshalb du dort etwas reinschreiben möchtest. Und natürlich auch welchen Datentyp der Schlüssel in der Registry hat. |
AW: Hexadezimale Zahl in Registry speichern
Tut mir leid, habe ich wohl vergessen.
Ist aber auch nicht weiter wichtig. Die Variable, welche zuvor 1031 entheilt, hatte den Datentyp ShortInt. Ein Wechsel zu Integer hat Abhilfe geschaffen. Warum jedoch verstehe ich nicht. Die sind doch beide unsigned :? |
AW: Hexadezimale Zahl in Registry speichern
BTW: Es gibt weder dezimale noch oktale noch hexadezimale Zahlen, sondern nur die entsprechende Darstellung einer Zahl.
|
AW: Hexadezimale Zahl in Registry speichern
Ich sehe immer noch nicht das eigentliche Problem:
Delphi-Quellcode:
Edit: Ok, ich sehe das Problem war schon gelöst
ShowMessage('$' + IntToHex(1031, 0) ); //Ergibt $407
ShowMessage('$' + IntToHex(1031, 2) ); //Ergibt $407 ShowMessage('$' + IntToHex(1031, 4) ); //Ergibt $0407 ShowMessage('$' + IntToHex(1031, 6) ); //Ergibt $000407 ShowMessage('$' + IntToHex(1031, 8) ); //Ergibt $00000407 //WriteString('Test', IntToHex(1031, 1)); //als String speichern, nicht Integer |
AW: Hexadezimale Zahl in Registry speichern
ShortInt ist nicht unsigned und geht von -128..127. Dass da keine 1031 reinpasst, sollte klar sein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 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