Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

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 14:35


Findfirst,Findnext schulung
 
hi

da ich in der letzten zeit ziemlich oft probleme habe mehrere dateien aus einem ordner zu kopieren oder aufeinmal auszulesen bitte ich euch darum mir mal ne kleine schulung zu geben da ich das nich ganz versteh wie ich das mache.

ich weis zwar das es mit findfirst, findnext usw geht aber wie realiesiere ich das

z.b.

ich lade mir einen ordner eine fileListBox1 und will drei dateien aus diesem ordner in eine andere FileListBox2 kopieren aber nur die Dateien von gestern wäre das für den anfang zu kopliziert????

DeddyH 23. Jul 2007 14:42

Re: Findfirst,Findnext schulung
 
zunächst einmal benutzt man immer das Dreigespann FindFirst, FindNext und FindClose (oder deren API-Entsprechungen). Die interessanten Daten zu jeder gefundenen Datei befinden sich nach FindFirst und FindNext in dem Record TSearchRec. Schau Dir zu diesem Record mal die Hilfe an, dann wird Dir schon manches klarer. ;)

SirThornberry 23. Jul 2007 14:47

Re: Findfirst,Findnext schulung
 
FindFirst heißt ja übersetzt schon FindeErstes
FindNext heißt dann FindeNächstes
und Mit FindClose schließt man das gesuche hab.

Rufst du also FindFirst auf wird die Suche eingeleidet und das Ergebnis wird in dem übergebenen TSearchRec gespeichert.
Gibt FindFirst dir 0 zurück heißt es das mindestens einwas gefunden wurde (die suche also erfoglreich eingeleidet wurde.
Ist dies der Fall sollte man die Suche auch mit FindClose wieder schließen
Delphi-Quellcode:
if (FindFirst(....) = 0) then
begin
  FindClose(...);
end;
FindFirst gibt dir aber wie gesagt nur das erste zurück. Um an die anderen Ergebnisse der Suche zu kommen musst du FindNext aufrufen bis dir FindNext einen Wert ungleich 0 zurück gibt
Delphi-Quellcode:
if (FindFirst(....) = 0) then
begin
  repeat
    //hier kann der Datei-/Ordnername aus der TSearchRec-Struktur ausgelesen werden
  until FindNext(...) <> 0;
  FindClose(...);
end;

SaFu 23. Jul 2007 14:50

Re: Findfirst,Findnext schulung
 
ok

FindFirst sucht im Verzeichnis Path nach dem ersten Eintrag, der mit dem angegebenen Dateinamen und den festgelegten Attributen übereinstimmt. Das Ergebnis wird im Parameter F zurückgegeben. Den Feldern dieses Datensatzes können Sie die benötigten Informationen entnehmen. FindFirst gibt im Erfolgsfall 0 zurück, ansonsten einen Fehlercode.

Der Konstantenparameter Path enthält das Verzeichnis und die Dateinamensmaske. Es können auch Platzhalterzeichen verwendet werden. '.\test\*.*' gibt beispielsweise alle Dateien im aktuellen Laufwerk an.

Delphi-Quellcode:
function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;
das heist mit der funktion übergebe ich den pfad in dem er die tateien suchen soll und er gibt sie mir dann alle zurück

Delphi-Quellcode:
function FindFirst(und hier der Pfad zum ordner)????
wie gesagt ich habe keine ahnung

DeddyH 23. Jul 2007 14:53

Re: Findfirst,Findnext schulung
 
Ein paar Beispiele:
Delphi-Quellcode:
FindFirst('C:\*.*',faHidden,Rec);
Alle versteckten Dateien im Wurzelverzeichnis von C:
Delphi-Quellcode:
FindFirst('C:\Windows\*',faDirectory,Rec);
Alle Unterverzeichnisse von C:\Windows

Sind Dir die Attribute egal, dann nimm faAnyFile.

SaFu 23. Jul 2007 15:00

Re: Findfirst,Findnext schulung
 
ok ich habe jetzt ein neues projekt gemacht in dem habe ich eine DirectoryListBox jetzt will ich mir alle ordner anzeigen lassen im Windows ordner

mach ich dann so

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
Var pfad :string;
begin
 pfad:= FindFirst('C:\Windows\*',faDirectory,Rec);
   DirectoryListBox1:= (pfad);
end;

SirThornberry 23. Jul 2007 15:06

Re: Findfirst,Findnext schulung
 
stop! eine Directorylistbox macht alles eigenständig! Sie füllt sich eigenständig und hat nix mit FindFirst etc. zu tun. Nimm eine normale Listbox. Und schau dir mein Beispiel von oben an.

SaFu 23. Jul 2007 15:14

Re: Findfirst,Findnext schulung
 
Also muss ich erstmal ein Record vm typ TSearchRect ertsellen und die FileListbox muss ich auch schon auf einen ordner setzen??

DeddyH 23. Jul 2007 15:15

Re: Findfirst,Findnext schulung
 
Wieso denn jetzt auf einmal eine FileListbox? Nimm eine stinknormale Listbox und schau Dir das Beispiel von marabu aus dem anderen Thread noch einmal an.

SaFu 23. Jul 2007 15:16

Re: Findfirst,Findnext schulung
 
ok mach ich


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.
Seite 1 von 4  1 23     Letzte »    

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