Форум: "Начинающим";
Текущий архив: 2011.03.13;
Скачать: [xml.tar.bz2];
ВнизFindFirstFile, FindNextFile Найти похожие ветки
← →
Scott Storch (2010-12-20 15:28) [0]Будет ли лишним добавить после FindFirst, перед try условие:
hFind <> INVALID_HANDLE_VALUE
procedure Tlocal_upds_analyzer.local_upds_prepare(var APrepared: TList<TPoint>);
var
find_data: _WIN32_FIND_DATA;
hFind: Cardinal;
begin
hFind := FindFirstFile(PChar(Flocal_upds_dir + "upd_*_to_*.zip"), find_data);
try
// <-- ?
repeat
// ...
until
not FindNextFile(hFind, find_data);
finally
FindClose(hFind);
end;
end;
← →
Ega23 © (2010-12-20 15:33) [1]
> Будет ли лишним добавить после FindFirst, перед try условие:
procedure TFTSDocList.ScanDir(DirName, FileExt: string; StoreExt: Boolean);
var
FindRes: Integer;
sr: TSearchRec;
begin
DirName := IncludeTrailingPathDelimiter(DirName);
FindRes := FindFirst(DirName + "*." + FileExt, faAnyFile, sr);
try
while (FindRes = 0) do
begin
try
if ((sr.Attr and faDirectory) = faDirectory) or
((sr.Name = ".") or (sr.Name = "..")) then
Continue;
with AddItem do
begin
if StoreExt then
DocFileName := sr.Name
else
DocFileName := ChangeFileExt(sr.Name, "");
DocID := GetNextDocID;
end;
finally
FindRes := FindNext(sr);
end;
end;
finally
FindClose(sr);
end;
← →
Scott Storch (2010-12-20 15:38) [2]thx.
можете объяснить почему FindNext(sr); в finally блоке?
← →
Ega23 © (2010-12-20 15:41) [3]
> можете объяснить почему FindNext(sr); в finally блоке?if ((sr.Attr and faDirectory) = faDirectory) or
((sr.Name = ".") or (sr.Name = "..")) then
Continue;
Чтобы не писатьthen
begin
FindRes := FindNext(sr);
Continue;
end;
← →
Andy BitOff © (2010-12-20 15:43) [4]В случае возникновения неприятностей в текущей итерации цикла, на следующую итерацию мы выйдем со следующим значением FindRes.
← →
Scott Storch (2010-12-20 16:08) [5]Ясн. спасибо.
А как реализовать логику с while, используя api функции, у меня в контрольной сказано, сделать с использованием winapi функций, без дельфийских оберток, если сделаю как советуете препод может придраться.
← →
Scott Storch (2010-12-20 16:11) [6]трудности в том что FindFirstFile в случае ошибки возвращает INVALID_HANDLE_VALUE, а FindNextFile - 0
← →
Игорь Шевченко © (2010-12-20 16:13) [7]
> А как реализовать логику с while, используя api функции,
> у меня в контрольной сказано, сделать с использованием
> winapi функций, без дельфийских оберток, если сделаю как
> советуете препод может придраться.
пусть придирается.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.03.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c