AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Probleme mit dem Aufruf von reg.ReadBinaryData
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit dem Aufruf von reg.ReadBinaryData

Ein Thema von chrissi · begonnen am 8. Okt 2004 · letzter Beitrag vom 9. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
chrissi

Registriert seit: 22. Sep 2004
9 Beiträge
 
Delphi 5 Standard
 
#1

Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 8. Okt 2004, 14:16
Hallo,
ich möchte eigentlich aus einem DWord in der Registry die Daten auslesen. Ich habe alles denke ich korrekt initialisiert, finde meinen Pfad auch mit
reg.RootKey
reg.OpenKey
reg.GetValueNames
Das funktionier soweit alles. Nur aus dem ReadBinaryData werde ich nicht schlau. Egal wie ich es aufrufe, immer bekomme ich irgendwelche Fehlermeldungen. Die OH hilft mir auch nicht, da ich es nicht verstehe, was die mit der Var Buffer und mit BufSize wollen. Ich habe versucht da Variablen anzulegen, aber nichts was ich gemacht habe hat funktioniert.
Wie muss ich den Befehl aufrufen, dass er mir in das Array of Integer (items) die Daten reinschreibt? Er gibt sie doch als Int-Wert zurück, oder? Wenn ich nur

items[0] := reg.ReadBinaryData('Software\...\ItemID1');

schreibe bekomme ich natürlich "nicht genügend Parameter" als Fehlermeldung zurück, aber wie und welche Parameter muss ich noch angeben (... steht für den ermittelten ewig langen Pfad)

Vielen Dank im Voraus und ich hoffe es gibt einen einfachen Aufruf, ähnlich wie bei ReadInteger oder so...

Chrissi
  Mit Zitat antworten Zitat
chrissi

Registriert seit: 22. Sep 2004
9 Beiträge
 
Delphi 5 Standard
 
#2

Re: Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 9. Okt 2004, 11:06
also ich hab es weiter versucht: Mein Aufruf sieht nun so aus:

reg.OpenKey('Software\...\Inventory',FALSE); // ... steht für den kompletten Pfad
reg.ReadBinaryData('ItemID'+IntToStr(1),buff,sizeo f(buff));

wobei ich die Variable buff definiert habe als: Byte, DWord, Integer, String

Ich erhalte immer die Fehlermeldung:

Im Projekt Project1.exe ist eine Exception der Klasse ERegistryException aufgetreten. Meldung: 'Ungültiger Datentyp für 'ItemID1''. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

Und wenn ich fortsetze bekomme ich noch ne Fehlermeldung

Ungültiger Datentyp für 'ItemID1'

Als was muss ich buff denn bitte deklarieren ? Der Registry-Inhalt ist ein DWord Wert in Hexadezimal ...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 9. Okt 2004, 11:45
wenn du in der Registry den Wert als DWord abspeicherst musst du diesen mit ReadInteger lesen.
Zitat:
Der Registry-Inhalt ist ein DWord Wert in Hexadezimal ...
richtiger wäre: "der Registry-Inhalt ist ein DWord und wird von dem Program "Regedit" Hexdezimal dargestellt
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
chrissi

Registriert seit: 22. Sep 2004
9 Beiträge
 
Delphi 5 Standard
 
#4

Re: Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 9. Okt 2004, 12:27
ja danke, so ist es richtiger ausgedrückt.
Mein Problem ist aber, dass ich mit ReadInteger immer folgende Fehlermeldung bekomme:

Im Projekt Project1.exe ist eine Exception der Klasse ERegistryException aufgetreten. Meldung: 'Konnte Daten für 'Software\...\ItemID1' nicht holen.' Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

Und nach Start:

Konnte Daten für 'Software\...\ItemID1' nicht holen.

Mein Aufruf:

items[0] := reg.ReadInteger('Software\...\ItemID'+IntToStr(1)) ; // ... steht weiterhin für den kompletten Pfad

Das hatte ich auch schon versucht. Ich kriege diesen Wert einfach nicht ausgelesen.

Ist evtl. mein Pfad falsch ? Er geht ist Software\...\Inventory darin liegt der DWord Wert ItemID1 dessen Wert von Regedit hexadezimal dargestellt wird.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 9. Okt 2004, 12:33
den Pfad musst du bei "OpenKey" angeben und bei "ReadInteger" brauchst du dann nur noch den Valuenamen angeben
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
chrissi

Registriert seit: 22. Sep 2004
9 Beiträge
 
Delphi 5 Standard
 
#6

Re: Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 9. Okt 2004, 15:02
Das hatte ich auch schon probiert:

reg.OpenKey('Software\...\Inventory\',FALSE);
items[0] := reg.ReadInteger('ItemID'+IntToStr(1));

aber da bekomme ich dann die Fehlermeldungen:

Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00447EDC in Modul 'PROJECT1.EXE'. Lesen von Adresse FFFFFFFF' Prozess ...

und

Zugriffsverletzung bei Adresse 00447EDC in Modul 'PROJECT1.EXE'. Lesen von Adresse FFFFFFFF

Daher hatte ich den Pfad dann in den ReadInteger Befehl mit reingenommen. Wo liegt denn da mein Fehler, kompilieren tut er es ohne zu meckern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 9. Okt 2004, 16:13
Gibt es denn den Schlüssel? Und in welchem Root liegt der? Und hast du den Root-Key gesetzt?

Zeig dochmal die ganze Routine und nicht nur so Bruchstücke mit denen keiner was anfangen kann.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
chrissi

Registriert seit: 22. Sep 2004
9 Beiträge
 
Delphi 5 Standard
 
#8

Re: Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 9. Okt 2004, 16:21
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  reg: TRegistry;

begin
  { - Erzeugen und initialisieren - }
  reg := TRegistry.Create;


  if ComboBox2.Text = 'Charakter wählenThen Abort;
  if ComboBox2.Text = 'Then Abort;
  reg.RootKey := HKEY_CURRENT_USER;

  reg.OpenKey
('Software\Vircom\T4C\'+ComboBox1.Text+'\Characters\'+ComboBox2.Text+'\Inventory\',FALSE);

    items[0] := reg.ReadInteger('ItemID'+IntToStr(1));
    memo1.Lines.Add(IntToStr(items[0]));
  { - Aufräumen - }

  FreeAndNil(reg);
end;
In den ComboBoxen wählt man Verzweigungen im Pfad. Der Pfad selbst existiert, das habe ich nachgeprüft in der Regedit. Das wählen mit den Comboboxen geht auch, ich habe mit den Pfad bis zum DWord Wert ItemID1 schon in memo1 anzeigen lassen, das klappt also. Nur das Auslesen des Wertes aus dem DWord-Schlüssel ItemID1 klappt einfach nicht.

als globale Variable ist noch definiert:

items: array of Integer;

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 9. Okt 2004, 16:29
Hi chrissi,

als Fehler kann ich mir nur vorstellen, dass der Fehler beim Schreibzugriff auf items[0] entsteht. (Abgesehen davon dass die Resourcenschutzblöcke fehlen).
Versuche mal, SetLength(items, 1); vor dem Zugriff auf Items[0] auszuführen.

Greetz
alcaeus

[add]Und bitte verwende in Zukunft die [delphi]-Tags, damit der Code lesbarer wird.[/add]
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
chrissi

Registriert seit: 22. Sep 2004
9 Beiträge
 
Delphi 5 Standard
 
#10

Re: Probleme mit dem Aufruf von reg.ReadBinaryData

  Alt 9. Okt 2004, 16:33
Ja das war der Fehler, vielen herzlichen Dank. Mit dem SetLength funktioniert es.

Wie ist das mit den Delphi-Tags gemeint ? Ich habe das per copy&paste reinkopiert ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr.
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