ďťż

Ładny brzuch

Witam mam taka procedure do odczytywania wszystlich wartosci podanego klucza ... ale za kazdym razem jak cos zmienie niechce dzialac ;/
procedure TForm1.rejestr(rk,klucz:string); var Reg : TRegistry; Lista: TStringList; begin Reg := TRegistry.Create; Lista := TStringList.create; memo1.lines:=lista; try reg.RootKey:=hkey(rk); Reg.OpenKey(klucz, False); reg.GetKeyNames(lista); finally Reg.Free; end; end;

rk to root key oczywiscie a klucz to klucz za parametr lista w funkcji GetKeyNames ktora sie zacina probowalem wstawic memo1.lines ale jak tak zrobie memo przy wywolaniu funkcji jest jedynie czyszczone ;/ niewiem czemu taka anomalia sie zrobila ;/ od wczoraj szukam w necie tego ale co bym niewpisal ciagle jest to samo;/ probowalem na roznych kluczach i sprawdzalem czy zawieraja jakies dane... zawieraly i i tak nic niewyswietlalo mi sie w memo:(
Użytkownik karbon edytował ten post 16 lipiec 2007, 09:29


Najpierw wyświetlasz pustą listę w memo a dopiero potem pakujesz do niej rejestr? Najpierw reg.GetKeyNames(lista); potem memo1.lines:=lista; i na końcu zwolnij liste, żeby ramu nie zapychała niepotrzebnie.

PS. zamiast memo1.lines:=lista; użyj Assign()
Użytkownik ~RolRain edytował ten post 16 lipiec 2007, 12:10
eh ;/ poprawilem kod dwuch procedur wyglada tak
procedure TForm1.scanautostart; begin rejestr('HKEY_LOCAL_MACHINE', 'Software\Microsoft\Windows\CurrentVersion\RunServices'); rejestr('HKEY_LOCAL_MACHINE', 'Software\Microsoft\Windows\CurrentVersion\RunServicesOnce'); rejestr('HKEY_LOCAL_MACHINE', 'Software\Microsoft\Windows\CurrentVersion\Run'); rejestr('HKEY_LOCAL_MACHINE', 'Software\Microsoft\Windows\CurrentVersion\RunOnce'); rejestr('HKEY_CURRENT_USER', 'Software\Microsoft\Windows\CurrentVersion\Run'); rejestr('HKEY_CURRENT_USER', 'Software\Microsoft\Windows\CurrentVersion\RunOnce'); rejestr('HKEY_CURRENT_USER', 'Software\Microsoft\Windows\CurrentVersion\RunServices'); end; procedure TForm1.rejestr(rk,klucz:string); var Reg : TRegistry; Str:TStringList; begin Reg := TRegistry.Create; lista:=TStringList.Create; try reg.RootKey:=hkey(rk); Reg.OpenKey(klucz, False); Reg.GetValueNames(lista); memo1.Lines.assign(lista); finally Reg.Free; end; end;

a mimo to nadal w memo podaje mi pusta liste ;/

ps. jak biore memo1.lines:=lista wychodzi to samo ;/
Użytkownik karbon edytował ten post 16 lipiec 2007, 12:40
To może sprawdź najpierw czy w ogóle klucz się otworzył.



Takie przypisanie

reg.RootKey:=hkey(rk);

jest nieprawidłowe.

http://www.swissdelp...ode.php?id=2118 Oczywiście jeśli musisz używać string'a.
Użytkownik Cyrkiel edytował ten post 16 lipiec 2007, 13:46
juz sam niewiem ;/ wpisalem ta funkcje StrToHkey wyszlo takie cos

const HKEYNames: array[0..6] of string = ('HKEY_CLASSES_ROOT', 'HKEY_CURRENT_USER', 'HKEY_LOCAL_MACHINE', 'HKEY_USERS', 'HKEY_PERFORMANCE_DATA', 'HKEY_CURRENT_CONFIG', 'HKEY_DYN_DATA'); function StrToHKEY(const KEY: string): HKEY; var i: Byte; begin Result := $0; for i := Low(HKEYNames) to High(HKEYNames) do begin if SameText(HKEYNames[i], KEY) then Result := HKEY_CLASSES_ROOT + i; end; end; procedure TForm1.rejestr(rk,klucz:string); var Reg : TRegistry; Str:TStringList; begin Reg := TRegistry.Create; Str:=TStringList.Create; try reg.RootKey:=StrToHKEY(rk); Reg.OpenKey(klucz, False); Reg.GetValueNames(str); memo1.Lines.Assign(str); finally Reg.Free; end; end;

ale cokowliek nierobie ciagle w memo nic niema ;/ juz myslalem ze w kluczach nic niema ale sprawdzalem ... sa wartosci;/ juz mam dosc tego ;/ moze zle do tego podchodze ? moze jest inna metoda na wyciagniecie listy z klucza ?;/

procedure rejestr(rk,klucz:string); var Reg : TRegistry; Str:TStringList; begin Reg := TRegistry.Create; Str:=TStringList.Create; reg.RootKey:=StrToHKEY(rk); try Reg.OpenKey(klucz, False); Reg.GetValueNames(str); form1.memo1.Lines.Assign(str); finally Reg.Free; end; end; procedure test; begin rejestr('HKEY_CURRENT_USER', 'Software\Microsoft\Clock'); end;

Działa, więc nie wiem w czym problem?
Użytkownik ~RolRain edytował ten post 16 lipiec 2007, 16:19
no niewiem moze u mnie na windows millenium cos nieta jest albo cos wpisalem w zle miejsce ;/ ale nadal w memo jedynie znika tekst 'memo' a niepojawia sie nic :( testowalem na takim programiku:

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, registry; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure rejestr(rk,klucz:string); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} const HKEYNames: array[0..6] of string = ('HKEY_CLASSES_ROOT', 'HKEY_CURRENT_USER', 'HKEY_LOCAL_MACHINE', 'HKEY_USERS', 'HKEY_PERFORMANCE_DATA', 'HKEY_CURRENT_CONFIG', 'HKEY_DYN_DATA'); function StrToHKEY(const KEY: string): HKEY; var i: Byte; begin Result := $0; for i := Low(HKEYNames) to High(HKEYNames) do begin if SameText(HKEYNames[i], KEY) then Result := HKEY_CLASSES_ROOT + i; end; end; procedure TForm1.rejestr(rk,klucz:string); var Reg : TRegistry; Str:TStringList; begin Reg := TRegistry.Create; Str:=TStringList.Create; try reg.RootKey:=StrToHKEY(rk); Reg.OpenKey(klucz, False); Reg.GetValueNames(str); memo1.Lines.Assign(str); finally Reg.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin rejestr('HKEY_CURRENT_USER', 'Software\Microsoft\Clock'); end; end..
Użytkownik karbon edytował ten post 17 lipiec 2007, 15:08
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •