Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hallo miteinander,

ich schreibe ein programm, mit dem ich bestimmte werte aus der registry auslesen kann.

das klappt auch teilweise ganz gut. nur bekomme ich nun eine fehlermeldung, die wohl mit den datentypen zusammenhängt:

'ungültiger Dateientyp für "Version".'

hier die variablen deklaration:

Z1c: String[200];

hier die prozedur, an der es hängt.

begin

reg:=TRegistry.Create;

try

Reg.RootKey := HKEY_LOCAL_MACHINE;

if Reg.OpenKey ('Software\Compugroup\Z1', TRUE) then

Z1c := Reg.ReadString('Version')

finally

Reg.CloseKey;

Reg.Free;

end;

end;

Z1c wird dann nachher in einem label ausgegeben.

"Version" hat als inhalt den hexa wert 1e.

kann ich das problem irgendwie auf die schnelle lösen, ohne das ich das ganze programm umschmeissen muss?

danke im voraus.

fred

Geschrieben
Original geschrieben von Psycho Fred

"Version" hat als inhalt den hexa wert 1e.

kann ich das problem irgendwie auf die schnelle lösen, ohne das ich das ganze programm umschmeissen muss?

Ist Version überhaupt ein String Wert?

Zitat aus der Hilfe:

Enthält der Registrierungseintrag keinen String, wird eine Exception ausgelöst

Hinweis: ReadString liest Daten, die mit einer der Methoden WriteString oder WriteExpandString gespeichert wurden.

oder ist das vielleicht ein Binär- oder DWord-Wert?

Geschrieben

Aus der Delphi-Hilfe:

Die Variable DWORD repräsentiert einen 4-Byte-Integer.

Unit

Windows

type DWORD = Longword;

Beschreibung

DWORD (Double Word) wird in der Windows-Programmierung zur Darstellung eines 4-Byte-Integers verwendet..

Also würd ichs mal mit nem ReadInteger versuchen.

Geschrieben

danke für deine bisherige hilfe.

wenn ich Z1c als Dword deklariere und mit readinteger auslese, bleibt der compiler an dieser stelle stehen:

Form2.Label18.Caption := Z1c;

also bei der ausgabe. mit der meldung: Inkompatible Typen 'String' und 'cardinal'.

woran kann das liegen?

Geschrieben

readInteger gibt wie der Name schon sagt einen Integer zurück. Du mußt eine Typumwandlung machen, um die Label-Caption zuweisen zu können.

(btw. Cardinal ist auch ein Integer-Typ).

Also z.B.

aRegValue: Integer;

....

(*some code*)

...

aRegValue := aReg.ReadInteger(....

lblRegValue.Caption := intToStr(aRegValue);

Ich hoffe das hilft dir weiter.

Edit: Das müßte auch mit DWord klappen, wichtig ist der intToStr bei der Zuweisung der Label-Caption, weil die einen String erwartet und keine Ganzzahl. BTW: Zc1 ist kein wirklich schöner Variablenbezeichner, wenn du in einem Team progst machst du dir so keine Freunde ! ;)

Geschrieben

wenn ich das so mache, läuft der compiler zwar durch, aber sobald er die daten auslesen soll, bricht das programm mit der fehlermeldung: Debugger Exception:

Im Projekt ist eine Exception der Klasse ERegistry Exception aufgetreten. Meldung: Fehler beim Holen der Daten.

also stimmt da immer noch irgendwas mit den datentypen nicht.

hier der quellcode dazu:

Z1c: Integer;

Z1c := Reg.ReadInteger('Version');

Form2.Label18.Caption := inttostr(Z1c);

danke für deine mühe.

Geschrieben
Original geschrieben von Psycho Fred

Z1c: Integer;

Z1c := Reg.ReadInteger('Version');

Form2.Label18.Caption := inttostr(Z1c);

danke für deine mühe.

Fast richtig, deklarier Z1c als DWord, der Rest müßte hinhauen. Wie gesagt der intToStr bei der Zuweisung der Caption ist das Entscheidende.

(intToStr geht auch mit DWord, habs grad ausprobiert).

Geschrieben

hab den fehler gefunden, danke für deine mühe.

ich musste noch in der prozedur abfangen, was ist, wenn der gesuchte schlüssel version nicht da ist.

die zeile hiess dann

if Reg.OpenKey ('Software\Compugroup\Z1', TRUE) then

if reg.valueexists('Version') then

Z1c := Reg.ReadInteger('Version');

danke nochmals

fred

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...