@Asphyxx - jeśli jeszcze raz napiszesz, że "czepia się" to wątek poleci z hukiem do kosza; Albo podaj treść błędu, ostrzeżenia czy hinta, albo udawaj, że nic na ten temat nie wiesz;
Po co jest argument InDir, skoro i tak z niego nie korzystasz? Po co Ci zmienna Path
, skoro nawet jej nie inicjujesz? Nie ustalasz jej wartości, ale używasz ją w funkcji FindFirst;
Ja nadal nie wiem co Ty w ogóle chcesz zrobić, bo z tego kodu nic nie wynika - jedna nic nie mówiąca plątanina; Zakładam więc, że potrzebujesz przeszukać dwa katalogi i dodać do komponentu nazwy znalezionych plików; Nazwy katalogów podawane są jako tablica, bo używanie do tego celu macierzy globalnej jest wieśniackie; Przykładowa metoda wyszukująca:
procedure TForm1.FileSearch(ADirectories: array of String; AFileName: String; AList: TListBox);
var
srFile: TSearchRec;
I: Integer;
begin
for I := Low(ADirectories) to High(ADirectories) do
begin
ADirectories[I] := IncludeTrailingPathDelimiter(ADirectories[I]);
if FindFirst(ADirectories[I] + AFileName, faAnyFile - faDirectory, srFile) = 0 then
try
repeat
AList.Items.Add(ADirectories[I] + srFile.Name);
until FindNext(srFile) <> 0;
finally
FindClose(srFile);
end;
end;
end;
i jej użycie w programie (poniżej przykład użycia dla zdarzenia OnClick
przycisku):
procedure TForm1.Button1Click(Sender: TObject);
begin
FileSearch(['C:\Foo\', 'C:\Bald\'], '*.*', ListBox1);
end;
Jak widzisz ścieżki podawane są statycznie, ale nic nie stoi na przeszkodzie aby podać stałą macierz:
procedure TForm1.Button1Click(Sender: TObject);
const
DIRECTORIES: array [0 .. 1] of String = ('C:\Foo\', 'C:\Bald\');
begin
FileSearch(DIRECTORIES, '*.*', ListBox1);
end;
Jeśli nie o to Ci chodziło, to proszę wytłumacz po ludzku jak ma ten algorytm działać, podając przy okazji cenne informacje, a nie jakieś tam "czepia się"... :]