FINDFIRST/NEXT Hilfe

fuxx

Grünschnabel
Hallo! Ich bin neu hier und hätte mal ne Bitte:

Könnte mir jemand bitte mal das genaue Vorgehen zu Findfirst und findnext in Boralnd Pascal 7 UND Delphi beschreiben? Ich hab mich schonmal kundig gemacht, weiß aber nicht was das Search REC ist
 

Dario Linsky

Erfahrenes Mitglied
Hi,

Könnte mir jemand bitte mal das genaue Vorgehen zu Findfirst und findnext in Boralnd Pascal 7 UND Delphi beschreiben?

Mit FindFirst() ermittelst Du zuerst die erste Datei in dem Suchpfad, dann mit einer Schleife alle weiteren Dateien und schliesslich wird mit FindClose die Suche abgeschlossen.

weiß aber nicht was das Search REC ist
Das TSearchRec ist die Struktur, in der die Daten zu der jeweils gefundenen Datei abgelegt werden.

Ich hab mich schonmal kundig gemacht
Dann müsstest Du aber eigentlich schon etliches dazu gefunden haben.

Gruss, Dario.
 

fuxx

Grünschnabel
Ich wollte doch mal ein Beispiel für ein kleines Programm dazu!
Bei mir in Pascal kam die Fehlermeldung String constant exceeds line! und ich weiß nichts damit anzufangen!
 

fuxx

Grünschnabel
Die Vorlage ist aus einem Hilfe Buch zu Pascal, aber ich weiß nicht was in den Record kommt und was nach Findfirst kommt!

uses DOS
var Dirinfo: searchrec;
begin
findfirst('*.exe',archive,dirinfo);
while doserror = 0 do
begin
writeLn(dirinfo.name);
findnext(dirinfo);
end;
end.

Nun was ich nicht verstehe: 1. was an die stelle von archive kommt, weiß ich ($..), bloß was kommt bei dirinfo hin?

Und 2: warum ist in der schleife einmal dirinfo.name, das andere mal nur dirinfo? es ist doch ein Record?
 

Dario Linsky

Erfahrenes Mitglied
Das ist eigentlich soweit schon komplett richtig. DirInfo ist aber eine ganz normale Variable, nur mit dem Unterschied, dass sie noch andere Variablen enthält.
FindFirst und FindClose nehmen das Record als Referenzparameter an, um die Werte darein zu übergeben.
Nur muss, wie Du schon gesagt hast, anstelle von archive der entsprechende Wert stehen.
 

fuxx

Grünschnabel
Ich hab jetzt folgendes dastehen:
Program test;
uses WinDOS;
type searchrec = Record
name:String;
End;
var Dirinfo: searchrec;
begin
findfirst('d:\*.exe',$3F,dirinfo);
while doserror = 0 do
begin
writeLn(dirinfo.name);
findnext(dirinfo);
end;
end.

Und er sagt mir bei dirinfo in der findfirst funktion, dass die Typen nicht miteinander verinbar sind!:mad:
 

Dario Linsky

Erfahrenes Mitglied
Das Record muss auch so aufgebaut sein:
Code:
type TSearchRec = record
		Time: Integer;
		Size: Integer;
		Attr: Integer;
		Name: TFileName;
		ExcludeAttr: Integer;
		FindHandle: THandle;
		FindData: TWin32FindData;
end;
 

fuxx

Grünschnabel
:eek: Wir reden jetzt aber noch von Pascal, und nicht von Delphi...
Davon stand nämlich nichts in dem Buch....

Und wie sind jetzt Tfilename, Thandle und Twin32FindData vereinbart?
 

Dario Linsky

Erfahrenes Mitglied
Sorry, das hab ich einfach mal so aus der Delphi-Hilfe kopiert.
TFilename ist das gleiche wie String, THandle ist Cardinal, wenn ich nicht völlig falsch liege. TWin32FindData müsstest Du mal in der MSDN nachschlagen, das ist ein Typ aus dem Windows API.
Ob jetzt Delphi oder Pascal macht in dem Fall keinen so grossen Unterschied, weil die Funktionen FindFirst, FindNext und FindClose ebenfalls Windows API sind.