Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 15 odgovora
  • 6.562 pregleda

Najnovija ↓

subkeys korjena Registrija i subfolderi 20.12.2004. u 19:12 · pre 266 meseci #1
1. Znam kako dobiti sve subkey-eve nekog ključa, ali kako dobiti subkey-eve korjena npr. HKEY_CURRENT_USER?
2. Kako dobiti sve subfoldere nekog foldera?
Re: subkeys korjena Registrija i subfolderi 20.12.2004. u 20:37 · pre 266 meseci
izmenjeno 1 put, poslednji put bancika 20.12.2004. u 20:39
  1. bancika20.12.2004. u 20:39zapis iz teksta poruke
#2
1) ubaci promenljivu Reg: TRegistry i otkucaj u telu neke procedure Reg i tacku, onda pogledaj koje sve metode imas i signuran sam da postoji neka intuitivnog imena koja radi bas to :)

2)
Code:

procedure ScanFolder(Folder: string);
var
  FindResult: integer;
  SearchRec : TSearchRec;
begin
  FindResult := FindFirst('c:\', faDirectory, SearchRec);
  while FindResult = 0 do
  begin
      Memo1.Lines.Add(SearchRec.Name);
      //tu ubaci rekurzivni poziv tipa ScanFolder('c:\' + SearchRec.Name) 
      FindResult := FindNext(SearchRec);
    end;
  end;
  FindClose(SearchRec);
end


ako hoces mozes da napravis rekurzivno da se poziva za svaki folder pa da onda dobijes full scan foldera
Potpis
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
Re: subkeys korjena Registrija i subfolderi 20.12.2004. u 20:38 · pre 266 meseci #3
1.
Code:

procedure EnumerateRegKeys(const HK : HKEY);
var
  countSubKeys : Cardinal;
  C1           : Integer;
  keyName      : Array[0..MAX_PATH] of Char;
  keyLength    : Cardinal;
begin
  RegQueryInfoKey(HK, nil, nil, nil, @countSubKeys, nil, nil, nil, nil, nil, nil, nil);
  For C1 := 0 to countSubKeys - 1 Do
  Begin
    keyLength := MAX_PATH;
    RegEnumKeyEx(HK, C1, keyName, keyLength, nil, nil, nil, nil);
    ListBox1.Items.Add(keyName);
  End;
end;


2.
Code:

procedure EnumerateSubFolders(path : String; const attrib : Integer);
var
  SRec : TSearchRec;
begin
  If path[Length(path)] <> '\' Then
    path := path + '\';

  If FindFirst(Path + '*.*', faDirectory + attrib, SRec) = 0 Then
    repeat
      If (SRec.Name <> '.') and
         (SRec.Name <> '..') and
         (SRec.Attr and faDirectory <> 0) Then
        ListBox1.Items.Add(SRec.Name);
    until FindNext(SRec) <> 0;

  FindClose(SRec);
end;
Re: subkeys korjena Registrija i subfolderi 20.12.2004. u 20:41 · pre 266 meseci #4
gle, u isto vreme :)

za ovo
Code:

If path[Length(path)] <> '\' Then
    path := path + '\';

imas elegantnije resenje
Code:

Path := IncludeTrailingBackslash(Path)
Potpis
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
Re: subkeys korjena Registrija i subfolderi 29.12.2004. u 19:42 · pre 265 meseci #7
Još pitanja o registriju.
Ako znam ime vrijednosti (value name), kako znati kojeg je tipa (value type) njena vrijednost (value data)??
Re: subkeys korjena Registrija i subfolderi 02.01.2005. u 15:46 · pre 265 meseci #8
Kako dobiti DataValue iz registrija ako je taj Value REG_DWORD tipa?
Nešto sam pokušavao sa RegEnumValue ali ne ide.
Re: subkeys korjena Registrija i subfolderi 03.01.2005. u 01:24 · pre 265 meseci #9
Ovako... ne mozes direktno procitati value data i value type ako znas value name. Treba da koristis funkciju RegEnumValue, ali joj kazes redni broj vrednosti koju zelis i ona ti vrati value name, data i type. Ne mogu sad da ti pisem kod... mora nekad i da se spava. Ako ne nadjes resenje napisacu ti ga za koji dan kad budem bio slobodan.

Pogledaj ovde: http://msdn.microsoft.com/libr.../sysinfo/base/regenumvalue.asp
Potpis
Play Store
Re: subkeys korjena Registrija i subfolderi 03.01.2005. u 12:45 · pre 265 meseci #10
Nije to problem. Problem je kako dobiti value data ako joj je tip REG_DWORD.
Ovako se dobije vrijednost stringa.
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
Registry:TRegistry;
hk:hkey;
i:integer;
ValueList:TStrings;
d:Array[0..MAX_PATH] of Char;
valueName:Array[0..MAX_PATH] of Char;
valueLength,aa:cardinal;
begin
Registry:=TRegistry.Create(KEY_ALL_ACCESS);
ValueList:=TStringList.Create;
Registry.RootKey:=HKEY_CURRENT_USER;
Registry.OpenKey('Control Panel\Desktop',false);
registry.GetValueNames(ValueList);
hk:=Registry.CurrentKey;
aa:=255;
for i:=1 to ValueList.Count do if ValueList.Strings[i-1]='DragWidth' then
  begin
    RegEnumValue(hk,i-1,valueName,valueLength,nil,nil,@d,@aa);
    ShowMessage(d);
  end;
registry.CloseKey;
end;
Re: subkeys korjena Registrija i subfolderi 03.01.2005. u 13:22 · pre 265 meseci #11
Probaj nesto ovako:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
Registry:TRegistry;
hk:hkey;
i:integer;
ValueList:TStrings;
d:Array[0..MAX_PATH] of Char;
valueName:Array[0..MAX_PATH] of Char;
valueLength,aa:cardinal;
Data:DWORD;
begin
Registry:=TRegistry.Create(KEY_ALL_ACCESS);
ValueList:=TStringList.Create;
Registry.RootKey:=HKEY_CURRENT_USER;
Registry.OpenKey('Control Panel\Desktop',false);
registry.GetValueNames(ValueList);
hk:=Registry.CurrentKey;
aa:=255;
for i:=1 to ValueList.Count do if ValueList.Strings[i-1]='NekoDWORDPolje' then
  begin
    RegEnumValue(hk,i-1,valueName,valueLength,nil,nil,@d,@aa);
    Move(d, Data, SizeOf(Data));
    Application.MessageBox(PChar(IntToStr(Data)),'DWORD Value');
  end;
registry.CloseKey;
end;
Potpis
Play Store
Re: subkeys korjena Registrija i subfolderi 03.01.2005. u 17:06 · pre 265 meseci #12
Ustvari... posto koristis TRegistry onda ti ni ne treba RegEnumValue, zar ne :)
Koristi TRegistry.ReadInteger, ReadString, ReadDateTime... ne treba da se patis kad se Borladn patio umesto tebe ;)
Potpis
Play Store
Re: subkeys korjena Registrija i subfolderi 04.01.2005. u 19:53 · pre 265 meseci #15
Sada definitivno:
Bool pišem koristeći Registry.WriteBool, u registriju je tipa DWord
Integer pišem koristeći Registry.WriteInteger, u registriju je tipa DWord
Float pišem koristeći Registry.WriteFloat, u registriju je tipa Binary
Šta se još u tipu Binary krije osim Float broja??
Re: subkeys korjena Registrija i subfolderi 04.01.2005. u 20:43 · pre 265 meseci #16
Ovako... WriteInteger upisuje DWORD sto je ok. WriteBool upisuje vrednost 1 ili 0 kao DWORD, a ne kao Boolean pa se zbog toga u RegEdit vidi kao da je vrednost tima DWORD, ali kada svojim programom upisujes i citas vrednost onda dajes Bool i funkcija ti vraca Bool. Float tip ne postoji u reg. i zato jednostavno Delphi zapisuje sta se nalazi na memoriskoj lokaciji gde je tvoj float i to mora da upise kao binary. Kao binary mozes da upises bilo sta... samo vodi racuna da to sto upisujes ne bude preterano veliko (zadrzi se na maximum nekoliko desetina bajtova). Ako treba da zapises nesto vece snimi to u neki svoj cfg ili ini fajl.
Potpis
Play Store
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme