Moin Mackhack,
ich habe mal die Änderungen bezüglich des Ergebnisses so eingebaut, wie ich es machen würde.
Delphi-Quellcode:
// Geändert
procedure TFindFile.SearchFiles(aRoot: String; const AslResult : TStringList;Mask: String = '*.xml';Recursive : Boolean = false);
//...
var
wfd : TWin32FindData;
hFile : THandle;
begin
if ( AnsiLastChar(aRoot)^ <> '\' ) then
aRoot := aRoot + '\';
if Recursive then
begin
hFile := FindFirstFile(PChar(aRoot + '*.xml'), wfd);
if ( hFile <> INVALID_HANDLE_VALUE ) then
try
repeat
if ( wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY ) then
if ( (String(wfd.cFileName) <> '.') and (String(wfd.cFileName) <> '..') ) then
SearchFiles(aRoot + wfd.cFileName,AslResult, Mask, Recursive); // Geändert
until FindNextFile(hFile, wfd) = False;
finally
Windows.FindClose(hFile);
end;
end;
hFile := FindFirstFile(PChar(aRoot + '*.xml'), wfd);
if ( hFile <> INVALID_HANDLE_VALUE ) then
// Zeile weggelassen
try
repeat
if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> FILE_ATTRIBUTE_DIRECTORY ) then
if ( IsLanguageFile(aRoot + wfd.cFileName, '<Languages>') ) then
AslResult.Add(aRoot + wfd.cFileName); // Geändert
until FindNextFile(hFile, wfd) = False;
finally
Windows.FindClose(hFile);
end;
end;
Der Ablauf wäre also:
- StringListe erzeugen
- Prozedure (Methode) aufrufen
- StringListe (Ergebnis) verarbeiten
- StringListe freigeben
[EDIT]
Statt extra eine StringListe zu erzeugen, könntest Du den Ergebnisparameter als TStrings deklarieren, und gleich die Memo.Lines als Parameter übergeben.
[/EDIT]