![]() |
Fehlermeldung bei "FindFirst()"
Ich habe folgenden Code:
Delphi-Quellcode:
Bei den mit //* makierten Zeilen gibt er mit immer folgende Fehlermeldung aus:
type TSearchRec = record
Time: Integer; // Zeitstempel der Datei. Size: Integer; // Größe der Datei in Byte. Attr: Integer; // Dateiattribute der Datei. Name: TFileName; // DOS-Dateiname und -Dateinamenserweiterung ExcludeAttr: Integer; FindHandle: THandle; FindData: TWin32FindData; end; var Form1: TForm1; pfad:string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var SuchRec:TSearchRec; begin SelectDirectory('Wähle den Ordner', '', pfad); FindFirst('c:\programme\*.*', faAnyFile, SuchRec); //* if ExtractFileExt(Suchrec.name) = 'log' then Combobox1.Items.Add(Suchrec.Name); if FindNext(SuchRec) = 0 then //* Combobox1.Items.Add(SuchRec.Name) else FindClose(SuchRec); //* end; Zitat:
|
Re: Fehlermeldung bei "FindFirst()"
Es muss ein Zeiger auf die TSearchRect Struktur sein. Also muss es @SuchRec heißen. Aber warum hast du die Struktur noch mal selber deklariert? Die wird doch schon von Delphi selber deklariert in der Unit Windows.pas oder so.
|
Re: Fehlermeldung bei "FindFirst()"
Warum erstellst du den Searchrect überhaupt neu?
Edit:Naja Luckie war schneller :) Also bei mir funktioniert es so auf jeden fall.
Delphi-Quellcode:
procedure xy.xxxx;
var Search : TSearchRec; begin if FindFirst (Directory+'\*.*' , faAnyFile-faSysFile, Search) = 0 then begin repeat fiExt := uppercase(ExtractFileExt(search.name)); .... |
Re: Fehlermeldung bei "FindFirst()"
Naja... danke für den Tipp, dass es in der Windows.pas deklariert ist, damit hast du mir indirekt geholfen, da es nämlich kein Pointer sein muss, aber meine doppelte Deklaration Probleme gemacht hat... :thumb:
|
Re: Fehlermeldung bei "FindFirst()"
Zitat:
![]() |
Re: Fehlermeldung bei "FindFirst()"
War ehrlich gesagt auch nur etwas ins Blaue geraten. Ich war zu faul in der Hilfe zu gucken. ;)
|
Re: Fehlermeldung bei "FindFirst()"
Moin Bastler,
Du solltest Dir übrigens angewöhnen bei Funktionen, deren Rückgabewert einen Fehler signalisiert, diesen auch auszuwerten, so wie Schaedel es in seinem Beitrag gezeigt hat. Ausserdem gehört bei Funktionen die im Erfolgsfalle Resourcen belegen, wie auch FindFirst, ein try/finally-Block dazu, der sicherstellt, dass die Resourcen auch wieder freigegeben werden. Was Du aber nicht wie Schaedel machen solltest: ;-)
Delphi-Quellcode:
Bei Flags, die intern Bitfelder darstellen, sollte man diese mit and not aus der Maske entfernen, und mit or hinzufügen, da man sonst leicht ungültige Werte erhalten kann.
faAnyFile-faSysFile
Das obige Beispiel sollte also besser
Delphi-Quellcode:
lauten.
faAnyFile and not faSysFile
Auch wenn es in diesem speziellen Falle mit - funktionier. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 Uhr. |
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 by Thomas Breitkreuz