Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1248884182
Tornado
2009-07-29 20:16
2011.03.13
Как построить график?


2-1292975954
alexparser
2010-12-22 02:59
2011.03.13
MySql - глюк версий?


4-1245776300
robotic
2009-06-23 20:58
2011.03.13
Сохранить файл из ресурса (своего). Как?


15-1290979780
Юрий
2010-11-29 00:29
2011.03.13
С днем рождения ! 29 ноября 2010 понедельник


2-1292848132
Scott Storch
2010-12-20 15:28
2011.03.13
FindFirstFile, FindNextFile





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский