Autor Beitrag
Millo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 147



BeitragVerfasst: Mi 13.11.02 16:10 
Moin,

Ich versuch grad mit einer schleife (For) an den Registry Key immer eine zahl zu ändern also:
'Programm\Programmkey\000000'+IntToStr(i)
Allerdings bekomme ich immer den Fehler Format '%p' ungültig oder mt Argument nicht kompatibel. ich hab es auch schon mit reapt und allem versucht geht aber nich.
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 13.11.02 16:51 
Ich sehe da keinen Fehler. Eventuell etwas mehr Code?
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Mi 13.11.02 16:51 
Von welchem Typ sind die Schlüssel denn?

Hast du es schon mit PChar('Programme/...'+IntToStr(i)); versucht?

_________________
If accidentally read, induce vomitting.
Millo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 147



BeitragVerfasst: Mi 13.11.02 17:27 
Moin
Das mit PChar hat nicht geklappt oder hab ich was falsch gemacht?
hier ist noch der code den ich benutze
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
begin
  Registry := TRegistry.Create;
  i:= 0;
  for i:=1 to 10 do
  begin
    try 
      Registry.RootKey := hkey_CURRENT_USER; 
      if Registry.OpenKey(PChar('Software\Microsoft\Internet Account Manager\Accounts\0000000')+IntToStr(i), False) then
      begin
        itm := ListView1.Items.Add;
        itm.Caption := Registry.ReadString('POP3 User Name');
        itm.SubItems.Add(Registry.ReadString('POP3 Server'));
        itm.SubItems.Add('110');
      end;                                                 
    finally
      registry.Free;                
    end;
  end;
end;
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 13.11.02 20:01 
Lösung #1:
ausblenden Quelltext
1:
Registry.OpenKey('Software\Microsoft\Internet Account Manager\Accounts\0000000'+IntToStr(i), False)					


Lösung #2:
ausblenden Quelltext
1:
Registry.OpenKey(pchar('Software\Microsoft\Internet Account Manager\Accounts\0000000'+IntToStr(i)), False)					
Millo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 147



BeitragVerfasst: Mi 13.11.02 21:27 
Moin

Danke für die hilfe klappt jetzt alles. Hatte allerdings noch nen Fehler drin lag bei dem registr.create aufruf der musste in der For-Schleife stehen.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.11.02 08:18 
Eigentlich nicht. Es reicht, die Registry einmal zu öffnen (TRegistry.Create), einmal den Root-Key festzulegen (HKCU), und dann in der Schleife die Schlüssel zu öffnen. Du musst nur deine try/finally/end-Konstruktion ein bisschen umstellen.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
reg := TRegistry.Create;
try
  reg.RootKey := HKEY_CURRENT_USER;
  for i := 1 to 10 do
    if(reg.OpenKey(...)) then
      begin
        // Werte lesen
        { ... }

        // Schlüssel wieder schließen
        reg.CloseKey;
      end;
finally
  reg.Free;
end;