![]() |
Wo soll bitte das FindClose(SR) stehen
Frage:
Wo sollte das "FindClose(SR)" stehen? An Stelle (1) oder Stelle (2)? Lese von einem Startverzeichnis "myDrivePath" alle gefundenen Verzeichnisse und Dateien in eine ListBox "myListBox".
Delphi-Quellcode:
Gruss Terence
procedure TForm1._update(myDrivePath: s_250;
out myListBox: TListBox; var retCntDirs, retCntFiles : integer; var retTotalBytes : cardinal); {-} procedure _readDP(myDP: s_250); var SR : TSearchRec; begin if (FindFirst(myDP+'*.*', faANYFILE, SR) = 0) then begin repeat if ((SR.Attr and faDirectory) = faDirectory) then begin {-found a dir, skip dirnames "." and ".."-} if ((SR.Name = '.') or (SR.Name = '..')) then else begin inc(retCntDirs); myListBox.Items.Add(myDP+SR.Name+'\'); _readDP(myDP+SR.Name+'\'); end; end else begin {-found a file-} inc(retCntFiles); retTotalBytes:=retTotalBytes+SR.Size; myListBox.Items.Add(myDP+SR.Name); end; until (FindNext(SR) <> 0); {-1-} FindClose(SR); end; {-2-} FindClose(SR); {-} end; begin myListBox.Items.Clear; myListBox.Items.BeginUpdate; if (AnsiLastChar(myDrivePath) <> '\') then myDrivePath:=myDrivePath+'\'; retCntDirs:=0; retCntFiles:=0; retTotalBytes:=0; _readDP(myDrivePath); myListBox.Items.EndUpdate; end; |
AW: Wo soll bitte das FindClose(SR) stehen
Am besten so
Delphi-Quellcode:
var SR : TSearchRec;
begin if (FindFirst('*.*', faANYFILE, SR) = 0) then try repeat [...] until (FindNext(SR) <> 0); finally FindClose(SR); end; end;
Delphi-Quellcode:
kann diese Suche öffnen, und wenn diese Suche geöffnet wurde, dann muss diese auch wieder geschlossen werden.
FindFirst
|
AW: Wo soll bitte das FindClose(SR) stehen
Zitat:
-> Stelle 1 Und wie Schokohase schon schreibt: Am besten mit Try .. Finally. |
AW: Wo soll bitte das FindClose(SR) stehen
Genial, jetzt weis ich bescheid.
Das mit dem Try .. Finally werde ich jetzt immer machen. Mit freundlichen Gruessen, Terence |
AW: Wo soll bitte das FindClose(SR) stehen
Das nützt aber nur was, wenn die Routinen auch Exceptions werfen. API Funktionen tuen das zum Beispiel nicht. Die liefern nur einen Fehlercode, den man auswerten muss.
|
AW: Wo soll bitte das FindClose(SR) stehen
Zitat:
|
AW: Wo soll bitte das FindClose(SR) stehen
Iiiicks. Ich hatte einen reinen Except-Block im Kopf.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 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-2025 by Thomas Breitkreuz