Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Hexadezimale Zahl in Registry speichern (https://www.delphipraxis.net/168170-hexadezimale-zahl-registry-speichern.html)

Pentium 80486 8. Mai 2012 17:17

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?

p80286 8. Mai 2012 17:34

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:
StrToInt(IntToHex(1031, 1));
Gruß
K-H

Pentium 80486 8. Mai 2012 17:54

AW: Hexadezimale Zahl in Registry speichern
 
WriteInteger verlangt einen Integer und IntToHex liefert einen String. Daher StrToInt.

Bummi 8. Mai 2012 17:57

AW: Hexadezimale Zahl in Registry speichern
 
und warum schreibst Du nicht einfach 1031....

Pentium 80486 8. Mai 2012 17:58

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;
http://www.delphipraxis.net/46643-post.html

shmia 8. Mai 2012 18:04

AW: Hexadezimale Zahl in Registry speichern
 
Folgende Varianten stehen zur Auswahl
Delphi-Quellcode:
WriteInteger('Test', 1031);                  // A
WriteInteger('Test', $407);                  // B
WriteString('Test', Format('%x', [1031]);    // C
Variante A und B machen genau das Gleiche.
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.

Pentium 80486 8. Mai 2012 18:09

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 :?

DeddyH 8. Mai 2012 18:10

AW: Hexadezimale Zahl in Registry speichern
 
BTW: Es gibt weder dezimale noch oktale noch hexadezimale Zahlen, sondern nur die entsprechende Darstellung einer Zahl.

Popov 8. Mai 2012 20:32

AW: Hexadezimale Zahl in Registry speichern
 
Ich sehe immer noch nicht das eigentliche Problem:

Delphi-Quellcode:
  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
Edit: Ok, ich sehe das Problem war schon gelöst

DeddyH 9. Mai 2012 07:03

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 17:54 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz