Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Findfirst,Findnext schulung (https://www.delphipraxis.net/96378-findfirst-findnext-schulung.html)

SaFu 23. Jul 2007 15:23

Re: Findfirst,Findnext schulung
 
OK
habe es jetzt so

Delphi-Quellcode:
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,DateUtils, FileCtrl;

type
  TFindFilesOption = (ffoExcludePath, ffoExcludeExt);
    TFindFilesOptions = set of TFindFilesOption;
    TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
   function FindFiles(const fileExpr: String; files: TStrings;options: TFindFilesOptions): Boolean; { Private-Deklarationen }

  public
   { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.FindFiles(const fileExpr: String; files: TStrings;
  options: TFindFilesOptions): Boolean;
var
  sr2: TSearchRec;
  path2: string;
  extWanted: Boolean;
begin
  Result := True;
  files.Clear;
  files.BeginUpdate;
  if ffoExcludePath in options
    then path2 := ''
    else path2 := ExtractFilePath(fileExpr);
  extWanted := not (ffoExcludeExt in options);
  if FindFirst(fileExpr, faArchive, sr2) = 0 then
  begin
    repeat
      if extWanted
        then files.Add(path2 + sr2.Name)
        else files.Add(ChangeFileExt(path2 + sr2.Name, ''));
    until FindNext(sr2) <> 0;
    FindClose(sr2);
  end else Result := False;
  files.EndUpdate;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 FindFiles('c:\WINDOWS\'+ '\*', ListBox1.Items, [ffoExcludePath, ffoExcludeExt]);
end;

end.
aber geht das jetzt auch kurzer das war ja ohne endungen

DeddyH 23. Jul 2007 15:29

Re: Findfirst,Findnext schulung
 
Ja sicher ohne Endungen, hast Du doch auch gesagt. Sonst nimm mal das ffoExcludeExt aus den Optionen.

SaFu 23. Jul 2007 15:36

Re: Findfirst,Findnext schulung
 
kannst du mir vielleicht ein beispiel geben wie z.b alle .ini dateien aus dem ordenr windows gelesen werden und in der listbox angezeigt werden vieleicht verstehe ich es dann besser

sorry für meine dumme fragen will es aber verstehen

DeddyH 23. Jul 2007 15:42

Re: Findfirst,Findnext schulung
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Rec: TSearchRec;
    i: integer;
begin
  i := FindFirst('C:\Windows\*.ini',faAnyFile,Rec);
  while i = 0 do
    begin
      ListBox1.Items.Add(Rec.Name);
      i := FindNext(Rec);
    end;
  FindClose(Rec);
end;

SirThornberry 23. Jul 2007 15:45

Re: Findfirst,Findnext schulung
 
@DaddyH: fast richtig. FindClose ist nicht notwendig wenn FindFirst fehl schlägt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Rec: TSearchRec;
begin
  if FindFirst('C:\Windows\*.ini',faAnyFile,Rec) = 0 then
  begin
    repeat
      ListBox1.Items.Add(Rec.Name);
    until FindNext(Rec) <> 0;
    FindClose(Rec);
  end;
end;

DeddyH 23. Jul 2007 15:49

Re: Findfirst,Findnext schulung
 
Aber es schadet auch nicht. :zwinker:

SaFu 23. Jul 2007 15:49

Re: Findfirst,Findnext schulung
 
alle zwei cods gehen

hab ich das mit meiner erklärung richtig verstanden
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Rec: TSearchRec;
begin
  if FindFirst('C:\Windows\*.ini',faAnyFile,Rec) = 0 then//da eins gefunden = 0
  begin
    repeat
      ListBox1.Items.Add(Rec.Name);
    until FindNext(Rec) <> 0; //wenn nichts gefunden dann 1 also schließen
    FindClose(Rec);
  end;
end;
was sagt jetzt dieses .name aus

SirThornberry 23. Jul 2007 15:51

Re: Findfirst,Findnext schulung
 
genau. 0 = kein Fehler
ungleich 0 = Fehler
Ein Fehler ist zum Beispiel wenn keine weiteren Dateien vorhanden sind.

DeddyH 23. Jul 2007 15:51

Re: Findfirst,Findnext schulung
 
Name ist ein Feld des Records TSearchRec. Da steht halt der Dateiname drin.

SaFu 23. Jul 2007 15:52

Re: Findfirst,Findnext schulung
 
also kannich anstatt denn namen mir auch andere atributte der dateien anzeigen lassen??


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz