Конференция "Сети" » Как проверить наличие файла на FTP [D7, WinXP]
 
  • Michael (19.08.08 11:12) [0]
    Извиняюсь за окровенный оффтоп, но поиск результата не дал.
    Ответ по ссылке http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=22877
    С использованием FileAge почему-то не работает.
    Задачу решил, однако, как мне кажется, не совсем оптимально - перебираю все файлы и сравниваю имя с искомым.
    Примерно так:

     for iCnt := 0 to IdFTP1.DirectoryListing.Count-1 do
       if IdFTP1.DirectoryListing.Items[iCnt].FileName = target_file_name then ...


    Не подскажете, существует ли более правильное решение, например - аналог SysUtil -кого FileExists?
    Спасибо.
  • Dennis I. Komarov © (19.08.08 13:09) [1]
    WinInet + FtpFindFist + F1
  • Michael (19.08.08 14:17) [2]
    Насколько я понимаю, использование

    function FtpFindFirstFile(hConnect: HINTERNET; lpszSearchFile: PChar;
     var lpFindFileData: TWin32FindData; dwFlags: DWORD;
     dwContext: DWORD): HINTERNET;


    невозможно без хэндла соединения. То есть, используя для соединения Indy, воспользоваться данной функцией нельзя?
  • Dennis I. Komarov © (19.08.08 14:44) [3]
    Инди живет отдельной жизнью...
    http://www.rsdn.ru/article/inet/inetapi.xml
  • clickmaker © (19.08.08 15:09) [4]
    list filename.ext
    или nlst filename.ext
  • Michael (19.08.08 15:13) [5]

    > Инди живет отдельной жизнью...

    "Это печально"(С)

    Спасибо за ссылку, буду ртфм-ить.)))
  • Dennis I. Komarov © (19.08.08 15:19) [6]
    > "Это печально"(С)

    ни чуть...
  • Michael (19.08.08 15:26) [7]

    > list filename.ext
    > или nlst filename.ext

    Имеются ввиду процедуры компонета TIdFTP?
  • clickmaker © (19.08.08 15:32) [8]
    > [7] Michael   (19.08.08 15:26)

    можно и так
    IdFtp.List('somefile.txt', false);
    FileExists := (Length(FIdFtp.ListResult.Text) > 0);
  • Michael (19.08.08 15:40) [9]

    > IdFtp.List('somefile.txt', false);

    У этой процедуры первым параметром идет список строк (TStrings)...
  • clickmaker © (19.08.08 15:45) [10]
    > [9] Michael   (19.08.08 15:40)

    да? Indy какой версии?
    В любом случае можно сказать что-то типа SendCmd и проверить возвращаемое значение (LastCmdResult)
  • Michael (19.08.08 15:49) [11]

    > clickmaker ©

    Indy 9. В этом случае код принципиально отличаться не будет от приведенного в 1-м посте. Вобщем-то, работает, просто я удивлен, что у Инди нет стандартного метода проверки наличия файла. Хотелось бы писать "правильный" код ))
 
Конференция "Сети" » Как проверить наличие файла на FTP [D7, WinXP]
Есть новые Нет новых   [134433   +22][b:0][p:0.001]