Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anzahl der .ini´s in einem Verzeichniss rausfinden (https://www.delphipraxis.net/45498-anzahl-der-ini%B4s-einem-verzeichniss-rausfinden.html)

Money Making Machinist 7. Mai 2005 11:33


Anzahl der .ini´s in einem Verzeichniss rausfinden
 
Hi,

ich habe ein Verzeichniss, x Ini-Dateien und null Ahung wie ich es anstellen soll rauszufinden wieviele Ini-Dateien sich in diesem Verzeichniss befinden. Das Einzigste was ich mir vorstellen könnt, ware eine Schleifen, die ihre Abbruchbedingen immer um eins erhöht.

Irgendjemand ne Ahnung?

jackie 7. Mai 2005 11:37

Re: Anzahl der .ini´s in einem Verzeichniss rausfinden
 
Hi!
Such mal nach Hier im Forum suchenFindFirst und Hier im Forum suchenFindNext

Sharky 7. Mai 2005 11:38

Re: Anzahl der .ini´s in einem Verzeichniss rausfinden
 
Hai,

in der Code-Library gibt es diesen Beitrag um Dateien in einem Verzeichniss aufzulisten. Mit ein, zwei Handgriffen müsstest Du das für deinen Fall anpassen können.

Money Making Machinist 9. Mai 2005 16:07

Re: Anzahl der .ini´s in einem Verzeichniss rausfinden
 
Also vom Prinzip her klappt des nun bei mir. Nur nicht alle Dateien werden ausgelesen, so werden z.B. von 6 Dateien nur 5 in die Memo geschrieben (die 4te wird ausgelassen, warum auch immer).

Hier mal der Code
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Ini: TInifile; i : integer; F: TSearchRec;
var1 : string;
begin

Findfirst('Stocks\*.ini', faAnyFile , F);
Ini:= TInifile.create('Stocks\'+F.Name);
var1:= Ini.readstring('Stock','Name','NIX');
Memo1.lines.Add(var1);


repeat
Findnext(F);

Ini:= TInifile.create('Stocks\'+F.Name);
var1:= Ini.readstring('Stock','Name','NIX');
Memo1.lines.Add(var1);

until (FindNext(F) <> 0);
//Memo1.Lines.Add(inttostr(i));


end;

Dani 9. Mai 2005 16:27

Re: Anzahl der .ini´s in einem Verzeichniss rausfinden
 
Hi! FindClose und Resourcenschutzblöcke nicht vergessen ;)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Ini: TInifile;
    i : integer;
    F: TSearchRec;
    s, RootDir : string;
begin
  i := 0;
  RootDir := ExtractFilePath(ParamStr(0));

  If FindFirst(RootDir + 'Stocks\*.ini', faAnyFile-faDirectory, F) = 0 then
  Repeat
   Ini:= TInifile.Create(RootDir + 'Stocks\'+F.Name);
   try
    inc(i);
    s := Ini.ReadString('Stock','Name','');
    Memo1.Lines.Add(IntToStr(i) +': ' + s);
   finally
    Ini.Free;
   end;
  Until FindNext(F) <> 0;

  SysUtils.FindClose(F);
end;

Money Making Machinist 9. Mai 2005 19:39

Re: Anzahl der .ini´s in einem Verzeichniss rausfinden
 
Ach sag doch einfach, das ich zuviel Code hab. :D

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Ini: TInifile; i : integer; F: TSearchRec;
var1 : string;
begin

if (Findfirst('Stocks\*.ini', faAnyFile , F)=0) then

repeat
      try
      Ini:= TInifile.create('Stocks\'+F.Name);
      var1:= Ini.readstring('Stock','Name','NIX');
      Memo1.lines.Add(var1);
      finally
      Ini.free;
      end;
until (FindNext(F) <> 0);

SysUtils.FindClose(F);
end;
So okay?

Warum eigentlich SysUtils.FindClose(F) und nicht nur FindClose(F)?

SirThornberry 9. Mai 2005 20:08

Re: Anzahl der .ini´s in einem Verzeichniss rausfinden
 
es reicht auch nur "FindClose". Und das FindClose braucht nur aufgerufen werden wenn FindFirst erfolgreich ist, ansonsten wird bei Findfirst intern schon FindClose aufgerufen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Ini: TInifile;
    i : integer;
    F: TSearchRec;
    s, RootDir : string;
begin
  i := 0;
  RootDir := ExtractFilePath(ParamStr(0));

  If FindFirst(RootDir + 'Stocks\*.ini', faAnyFile-faDirectory, F) = 0 then
  begin
    Repeat
      Ini:= TInifile.Create(RootDir + 'Stocks\'+F.Name);
      try
        inc(i);
        s := Ini.ReadString('Stock','Name','');
        Memo1.Lines.Add(IntToStr(i) +': ' + s);
      finally
        Ini.Free;
      end;
    Until FindNext(F) <> 0;
    FindClose(F);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 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