Привет народ! Надо найти файлы в заданном каталоге. Задача такова что, мне нужно записать все полные пути файлов в массив. Так как я не знаю заранее сколько файлов будет, решил использовать динамические массивы. Вот моя процедура:
Код
procedure ScanDir(StartDir: string; Mask: string; list: array of string);
var
SearchRec: TSearchRec;
i: integer;
begin
i:= 0;
if Mask = '' then
Mask := '*.*';
if StartDir[Length(StartDir)] <> '\' then
StartDir := StartDir + '\';
if FindFirst(StartDir + Mask, faAnyFile, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory) <> faDirectory then //если не папка
begin
i := Length(list);
SetLength(list, Succ(i));
list[i]:=StartDir + SearchRec.Name; //добавляем файл в динамичский массив!
end
else
if (SearchRec.Name <> '..') and (SearchRec.Name <> '.')then
begin //если папка, но не текущая и не та которая уровнем выше
i := Length(list);
SetLength(list, Succ(i));
ScanDir(StartDir + SearchRec.Name + '\', Mask, list[i]); //ищем файлы в подкаталогах (или это сейчас не надо?)
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec); //очищаем структуру
end;
end;
При компиляции выдает:
Цитата
[DCC Error] Unit1.pas(45): E2008 Incompatible types
на строки
Код
SetLength(list, Succ(i));
В чем может быть проблема?
Читал docs.embarcadero.com, но так и не понял, что у меня в коде не совместимо.