![]() |
delphi unterordner auflisten(2)
habe aus einem älteren Beitrag in DP eine Funktion zum Auflisten aller Unterordner entdeckt. möchte als Rückgabe wert eine Stringlist.
der Compiler spuckt folgende Fehlermeldung aus : [DCC Fehler] Unit_filerecovery.pas(54): E2238 Für 'aDirList' ist ein Vorgabewert erforderlich; ich sehe leider den Fehler nicht , kann jemand helfen ??
Delphi-Quellcode:
unit Unit_filerecovery; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus, Vcl.ExtCtrls, FileCtrl ; type TFileReCovForm = class(TForm) Memo1: TMemo; MainMenu: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; Panel1: TPanel; RootFolderEdit: TEdit; SelectRFButton: TButton; GetAllFoldersButton: TButton; Label1: TLabel; procedure GetAllFoldersButtonClick(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure SelectRFButtonClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } FOutPutFolder : String; end; procedure FindAllFolders(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True; var aDirList : TStringList ); var FileReCovForm: TFileReCovForm; implementation {$R *.dfm} procedure TFileReCovForm.SelectRFButtonClick(Sender: TObject); begin selectDirectory('Select a Folder ', '', FOutPutFolder); RootFolderEdit.text := FOutPutFolder; end; procedure TFileReCovForm.Exit1Click(Sender: TObject); begin close; end; procedure FindAllFolders(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True; var aDirList : TStringList ); var SR: TSearchRec; begin if AnsiLastChar(RootFolder)^ <> '\' then RootFolder := RootFolder + '\'; if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then if (SR.Name <> '.') and (SR.Name <> '..') then begin FindAllFolders(RootFolder + SR.Name, Mask, Recurse); aDirList.Add(RootFolder); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end ; procedure TFileReCovForm.GetAllFoldersButtonClick(Sender: TObject); var DirStringList : TStringList; begin DirStringList:=TStringList.Create; FindAllFolders(FOutPutFolder, '' ,true, DirStringList ); memo1.Lines.Assign(DirStringList); DirStringList.Free; end; end. |
AW: delphi unterordner auflisten(2)
Zitat:
procedure FindAllFolders(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True; const aDirList : TStringList = nil); |
AW: delphi unterordner auflisten(2)
Da du für die Funktionsparameter Mask und Recurse Vorgabewerte gemacht hast, muss das auch für alle darauf folgenden Funktionsparameter gelten, hier ADirList. Da das nicht sonderlich sinnvoll ist, solltest du die Reihenfolge der Funktionsparameter ändern (z.B. ADirList zuerst) oder du gibst wirklich eine TStringList zurück, machst also eine function draus.
MfG Dalai |
AW: delphi unterordner auflisten(2)
Zitat:
|
AW: delphi unterordner auflisten(2)
Zitat:
Warum hat DeddyH ja schon geschrieben (danke roter Kasten ;-)). Die Deklaration als var-Parameter macht auch keinen Sinn, wie BlackSeven schon korrigiert hat. Wenn man dann wie Dalai geschrieben hat, die Reihenfolge ändert und zusätzlich aus TStringList die allgemeinere Elternklasse TStrings macht (um direkt z.B. die Items einer ListBox übergeben zu können usw.), sieht das so aus:
Delphi-Quellcode:
// EDIT:
procedure FindAllFolders(const ADirList: TStrings; const ARootFolder: string; const AMask: string = '*.*'; ARecurse: Boolean = True);
begin ... Nebenbei: Wozu übergibst du die Maske, wenn du sie ohnehin nicht nutzt? |
AW: delphi unterordner auflisten(2)
Danke für die Inputs; hatte keine Ahnung welchen Einfluss die Reihenfolge meine Funktionsparameter hat
Delphi-Quellcode:
procedure FindAllFolders(const ADirList: TStrings; const ARootFolder: string; const AMask: string = '*.*'; ARecurse: Boolean = True); anstelle von procedure FindAllFolders(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True; var aDirList : TStringList ); |
AW: delphi unterordner auflisten(2)
Zitat:
![]() ![]() |
AW: delphi unterordner auflisten(2)
Zitat:
IncludeTrailingPathDelimiter() und IncludeTrailingBackslash() ? |
AW: delphi unterordner auflisten(2)
IncludeTrailingBackslash mindestens ab Delphi 4 IIRC, IncludeTrailingPathDelimiter müsste mit Kylix dazugekommen sein, also ab Delphi 6.
|
AW: delphi unterordner auflisten(2)
Seit D5
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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