Bilgisayardaki aynı uzantılara erişim (?)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Bilgisayardaki aynı uzantılara erişim (?)

Mesaj gönderen qamyoncu »

Merhabalar..

Direk sorunuma geçmek istiyorum. Delphi ile kendim bir uzantı yarattım(.etc). Bir text dosyası gibi kullanıyorum. içine gerekli bilgileri giriyorum. Formun konumu, boyutu, rengi vs. gibi. Gerekli encript işlemini de yaptıktan sonra programım ile kaydediyorum ve sorunsuz olarak çalışıyor. Fakat programıma oturum açarak girme mantığını oturtmak istediğimde; yani oturumunu açmış olan kullanıcı, yeni kullanıcılar yaratabilecek, kendi kullanıcısını silebilecek vs. gibi. Yeni kullanıcı yarattığında bilgisayardaki diğer .etc uzantılı dosyalardada bu kullanıcı olmalı. Bu olayı veritabanı kullanmadan çözmek istiyordum. Şöyle düşündüm: Eğer bütün kullanıcıları yarattığım uzantının(.etc) içine gömersem, rahatlıkla kontrol edebilir ve veritabanına gerek duymadan sorunumu halledebilirim diye düşündüm. Bunun için bilgisayardaki tüm .etc uzantılı dosyalara erişmem, içine girmem ve gerekli satırları değiştirmem gerekiyor. Tek sorunum ise dosyaya erişebilmek. Yani delphi ile, kullanıcıya hissettirmeden, bilgisyardaki tüm .etc uzantılı dosyaları bulup adreslerini sıralayacak bir kod bloğu yaratmam gerek. Bu konu hakkında bulduğum şey:

Kod: Tümünü seç

Function DosyalariBul(yol,aramametni:string):integer;
var
bulundu:TSearchRec;
begin
if FindFirst(yol+aramametni,faAnyFile,bulundu) = 0 then
begin
Result:=0;                                         ///// Değiştirilen satır!!!
repeat
begin
if (bulundu.Attr AND faDirectory) > 0 then
result:=result+DosyalariBul(yol+bulundu.Name+'\',aramametni)
else inc(Result);
end;
until (FindNext(bulundu) <> 0);
end;
FindClose(bulundu);
end;
yol ve aramametni ne olursa olsun sonuç hep 0 çıkıyor.

'Result:=0;' satırını kaldırdığımda ise sürekli '9772604' sonucu geliyor. Sorunu anlayamadım.
Bu konu hakkında yardımlarınızı ve farklı görüşleriniz var ise görüşlerinizi bekliyorum.. Teşekkür ederim.
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Bilgisayardaki aynı uzantılara erişim (?)

Mesaj gönderen Battosai »

Kod: Tümünü seç

Procedure FindFiles(const Path, Mask: string; IncludeSubDir: boolean; Out List:TStringList);
var
  FindResult: integer;
  SearchRec : TSearchRec;
begin
  FindResult := FindFirst(Path + Mask, faAnyFile - faDirectory, SearchRec);
  while FindResult = 0 do
  begin
    { do whatever you'd like to do with the files found }
    List.Add(Path + SearchRec.Name);
    FindResult := FindNext(SearchRec);
  end;
  { free memory }
  FindClose(SearchRec);
  if not IncludeSubDir then
    Exit;
  FindResult := FindFirst(Path + '*.*', faDirectory, SearchRec);
  while FindResult = 0 do
  begin
    if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        FindFiles (Path + SearchRec.Name + '\', Mask, TRUE,List);
    FindResult := FindNext(SearchRec);
  end;
  { free memory }
  FindClose(SearchRec);
end;

Kod: Tümünü seç

Var
i:Integer;
liste:TStringList;
begin
    liste:=TStringList.Create;
    FindFiles(GetCurrentDir+'\','*.Dat',False,liste);
    Memo1.Lines.Clear;
    Memo1.Lines:=Liste;
    liste.Free;
end;
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: Bilgisayardaki aynı uzantılara erişim (?)

Mesaj gönderen qamyoncu »

cevabınız için teşekkür ederim:) çok sağolun. Birşeyi atlamışım şimdi farkettim. incldesubdir'in döndüreceği değeri true yapmalıymışım :) kolay gelsin hocam..
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Cevapla