AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Registry Werte beim starten auslesen klappt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Registry Werte beim starten auslesen klappt nicht

Ein Thema von Helpliner · begonnen am 23. Jan 2004 · letzter Beitrag vom 25. Jan 2004
Antwort Antwort
Seite 2 von 3     12 3      
Helpliner

Registriert seit: 6. Aug 2003
Ort: Hamburg
84 Beiträge
 
Delphi 7 Personal
 
#11

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 23. Jan 2004, 09:27
Ich habs zwar nicht mit try finally sondern etwas verkürzt mit try except gemacht, aber es ist mittlerweile eingebaut.
Das war auch zwingend nötig, weil selbst wenn der Key erstellt wird, existieren ja noch lange keine Werte.
VORSICHT: blutiger Anfänger!

Ähnlichkeiten mit tatsächlich funktionierendem Code sind rein zufällig und definitiv unbeabsichtigt.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#12

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 23. Jan 2004, 09:32
Das habe ich aber nicht gemeint.
Ich spreche davon:
Zitat:
Delphi-Quellcode:
  reg := TRegistry.Create;
  with reg do
  begin
    RootKey := HKEY_CURRENT_USER;
    if OpenKey('Software\Fischmob\Flotteninformationen\0.1 beta', false) then
    begin
      Try
        Edit1.Text := ReadString('Typ 1');
        Edit2.Text := ReadString('Typ 2');
        Edit3.Text := ReadString('Typ 3');
        Edit4.Text := ReadString('Typ 4');
        Edit5.Text := ReadString('Typ 5');
        Edit6.Text := ReadString('Typ 6');
        Edit7.Text := ReadString('Typ 7');
        Edit8.Text := ReadString('Typ 8');
        Edit9.Text := ReadString('Typ 9');
      finally
        CloseKey;
        Free;
      end;
    end;
  end;
Das try/finally wird üblicherweise nach dem Erzeugen des Registry-Objektes benutzt. Wenn du auf Nummer Sicher gehen willst, kannst du auch "OpenKey" noch mal damit einklammern, so wie du es ja auch getan hast.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#13

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 23. Jan 2004, 09:36
hoi,

hoffe du verwechselst mich nicht mit dem topic creator. btw ist was falsch an dem code?
Mario
  Mit Zitat antworten Zitat
Helpliner

Registriert seit: 6. Aug 2003
Ort: Hamburg
84 Beiträge
 
Delphi 7 Personal
 
#14

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 23. Jan 2004, 09:46
Hmmmm, eventuell habe ich da jetzt ein Verständniss Problem, try --> finally benutzt du dabei doch um Fehler abzufangen falls einer der Werte in dem Registry-Key nicht existiert oder ?

Ich habe das folgendermassen gemacht:

Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
 var reg : TRegistry;
begin
 reg:=TRegistry.Create;
 reg.RootKey:=HKEY_CURRENT_USER;
  try
   reg.OpenKey('Software\Fischmob\Flotteninformationen\0.1 beta', true);
   Edit1.Text := reg.ReadString('Typ 1');
   Edit2.Text := reg.ReadString('Typ 2');
   Edit3.Text := reg.ReadString('Typ 3');
   Edit4.Text := reg.ReadString('Typ 4');
   Edit5.Text := reg.ReadString('Typ 5');
   Edit6.Text := reg.ReadString('Typ 6');
   Edit7.Text := reg.ReadString('Typ 7');
   Edit8.Text := reg.ReadString('Typ 8');
   Edit9.Text := reg.ReadString('Typ 9');
  except
   Edit1.Text := ('0');
   Edit2.Text := ('0');
   Edit3.Text := ('0');
   Edit4.Text := ('0');
   Edit5.Text := ('0');
   Edit6.Text := ('0');
   Edit7.Text := ('0');
   Edit8.Text := ('0');
   Edit9.Text := ('0');
  end;
 reg.free;
end;
d.h. tritt der Fall auf das die Werte nicht existieren (erster Programmstart), dann fülle ich die Edits mit 0, beim beenden des Programmes werden die Werte dann ja auf jedenfall geschrieben.

Oder verstehe ich jetzt etwas grundsätzlich falsch?
VORSICHT: blutiger Anfänger!

Ähnlichkeiten mit tatsächlich funktionierendem Code sind rein zufällig und definitiv unbeabsichtigt.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#15

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 23. Jan 2004, 10:10
@Pseudemys Nelsoni: Upps, ja stimmt. Ich habe dich verwechselt. Mein Fehler. Aber ich hätte den Code so gestaltet:
Delphi-Quellcode:
reg := TRegistry.Create;

if reg <> nil then
  with reg do
  try
    // eigentlich unnötig, weil Standard -->
    // RootKey := HKEY_CURRENT_USER;

    if OpenKey('Software\Fischmob\Flotteninformationen\0.1 beta',
      false) then
    try
      Edit1.Text := ReadString('Typ 1');
      Edit2.Text := ReadString('Typ 2');
      Edit3.Text := ReadString('Typ 3');
      Edit4.Text := ReadString('Typ 4');
      Edit5.Text := ReadString('Typ 5');
      Edit6.Text := ReadString('Typ 6');
      Edit7.Text := ReadString('Typ 7');
      Edit8.Text := ReadString('Typ 8');
      Edit9.Text := ReadString('Typ 9');
    finally
      CloseKey;
    end;
  finally
    Free;
  end;
Man könnte das Auslesen der Werte und Zuweisen an die Edits auch so machen:
Delphi-Quellcode:
      for i := 1 to 9 do
        if(ValueExists('Typ ' + inttostr(i))) then
        begin
          MyEdit := self.FindComponent('Edit' + inttostr(i));
          if(MyEdit <> nil) then
            (MyEdit as TEdit).Text := ReadString('Typ ' + inttostr(i));
        end;
Auf die gleiche Weise kann man natürlich vor dem Registryzugriff die Edits mit den gewünschten Standardwerten füllen.

@Helpliner: Wenn du die Werte nur lesen willst, halte ich
Zitat:
Code:
reg.OpenKey('Software\Fischmob\Flotteninformationen\0.1 beta', [color=#ff0000]true[/color]);
für überflüssig. false reicht, denn schreibend greifst du ja ohnehin nicht zu. Das machst du sicher später, beim Speichern der Werte, und dann passt es auch.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#16

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 23. Jan 2004, 10:16
@mathias, jo stimmt, sieht schon besser aus
Mario
  Mit Zitat antworten Zitat
Helpliner

Registriert seit: 6. Aug 2003
Ort: Hamburg
84 Beiträge
 
Delphi 7 Personal
 
#17

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 23. Jan 2004, 10:24
Stimm, wenn ich so drüber nachdenke ist false völlig ausreichend.

Zitat von MathiasSimmack:
Delphi-Quellcode:
for i := 1 to 9 do
        if(ValueExists('Typ ' + inttostr(i))) then
        begin
          MyEdit := self.FindComponent('Edit' + inttostr(i));
          if(MyEdit <> nil) then
            (MyEdit as TEdit).Text := ReadString('Typ ' + inttostr(i));
        end;
Auf die gleiche Weise kann man natürlich vor dem Registryzugriff die Edits mit den gewünschten Standardwerten füllen.
So etwas ähnliches habe ich zu Anfang ausprobiert, nur das ich es nicht hinbekommen habe ich habe versucht

Delphi-Quellcode:
  reg.WriteString('Typ 1', Edit1.Text);
  reg.WriteString('Typ 2', Edit2.Text);
  etc.
durch

Delphi-Quellcode:
 var i: Integer;
begin
 i := 1;
  while i <= 9 do begin
   reg.WriteString('Typ' + IntToStr(i)), Edit(i).Text);
  end;
end;
Wobei das ersetzen der Zahl in Editx.Text nicht geklappt hat.
Aber jetzt habe ich ja eine Lösung dafür auf dem Silberteller bekommen die ich sogar noch verstehe *freu*
VORSICHT: blutiger Anfänger!

Ähnlichkeiten mit tatsächlich funktionierendem Code sind rein zufällig und definitiv unbeabsichtigt.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#18

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 23. Jan 2004, 10:29
Zitat von Helpliner:
ist das denn Zufall das die Edits.... tja... "langsamer" da sind als das Form.Create oder ist das eine Erstellungsreihenfolge (Erst Form, dann Items auf der Form) ?
Latürnich: Dein Kind kann nicht auf die Welt kommen bevor Du nicht geboren wurdest. -> Du kannst nichts auf einen Tisch stellen (auf einer Form erzeugen) wenn der Tisch noch nicht da steht (das Form noch nicht created wurde).

Zuerst immer der Parent und dann die Child-Controls. Alternativ im OnCreate immer erst ein inherited; und dann erst zuweisungen, denn im inherited werden die childcontrols erzeugt.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#19

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 23. Jan 2004, 12:39
Zitat von Phoenix:
Zitat von Helpliner:
ist das denn Zufall das die Edits.... tja... "langsamer" da sind als das Form.Create oder ist das eine Erstellungsreihenfolge (Erst Form, dann Items auf der Form) ?
Latürnich: Dein Kind kann nicht auf die Welt kommen bevor Du nicht geboren wurdest. -> Du kannst nichts auf einen Tisch stellen (auf einer Form erzeugen) wenn der Tisch noch nicht da steht (das Form noch nicht created wurde).

Zuerst immer der Parent und dann die Child-Controls. Alternativ im OnCreate immer erst ein inherited; und dann erst zuweisungen, denn im inherited werden die childcontrols erzeugt.
Muss Dir leider widersprechen, in dem Moment, da das OnCreate-Ereignis eines Formulars ausgelöst wird, sind sämtliche Komponenten darauf bereits erzeugt. Sonst hätte es in dem Fall hier auch Schutzverletzungen gehagelt statt eines merkwürdigen Programmverhaltens.

D.h. schon in FormCreate kann man auf alle Koponenten zugreifen, die man selbst aufs Form gepackt hat.

Gruß, teebee
  Mit Zitat antworten Zitat
Helpliner

Registriert seit: 6. Aug 2003
Ort: Hamburg
84 Beiträge
 
Delphi 7 Personal
 
#20

Re: Registry Werte beim starten auslesen klappt nicht

  Alt 25. Jan 2004, 20:33
Aber anscheinend ja nicht 100%ig sauber, sonst hätte es das
Zitat von teebee:
merkwürdigen Programmverhaltens.
ja nicht gegeben.
VORSICHT: blutiger Anfänger!

Ähnlichkeiten mit tatsächlich funktionierendem Code sind rein zufällig und definitiv unbeabsichtigt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 02:26 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