Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Поиск файла на ftp сервере   Найти похожие ветки 

 
Helen   (2007-03-06 11:07) [0]

Добрый день. Помогите разобраться. Копирую файлы с ftp сервера:
hFind:=FtpFindFirstFile(hFTP, PChar(ss+"*.dbf"), sRec, 0, 0);
repeat
   hFile := FtpOpenFile(hFTP, sRec.cFileName, GENERIC_READ, FTP_TRANSFER_TYPE_BINARY, 0);
   if hFile = nil
   then begin
                   hNext:=InternetFindNextFile(hFind, @sRec);
                   Continue;
   end;
   AssignFile(LocalFile, ConfArr[6]+"\"+NewName);
   Rewrite(LocalFile, 1);
   bufsize := READ_BUFFERSIZE;
   while (bufsize > 0) do begin
        if not InternetReadFile(hFile, @buffer, READ_BUFFERSIZE, bufsize)
        then Break;

        if (bufsize > 0) and (bufsize <= READ_BUFFERSIZE)
        then BlockWrite(LocalFile, buffer, bufsize);
    end;
    InternetCloseHandle(hFile);
    CloseFile(LocalFile);
    hNext:=InternetFindNextFile(hFind, @sRec);
until hNext=False;


А теперь нужно скопировать еще один файл:

hFind:=FtpFindFirstFile(hFTP, PChar("f4calls.dbf"), sRec, 0, 0);
hFile := FtpOpenFile(hFTP, sRec.cFileName, GENERIC_READ, FTP_TRANSFER_TYPE_BINARY, 0);
и т.д.


почему-то FtpFindFirstFile выдает nill, хотя файл там точно есть


 
Плохиш ©   (2007-03-06 11:12) [1]


> почему-то FtpFindFirstFile выдает nill, хотя файл там точно
> есть

Значит нет доступа к нему по ftp.


 
Helen   (2007-03-06 11:16) [2]

Дело в том, что если я подключаюсь руками, а не программо, то файл можно скопировать


 
Плохиш ©   (2007-03-06 11:19) [3]

Значит ищешь не там...


 
Helen   (2007-03-06 11:20) [4]

ищу в той же папке, что и предидущие файлы


 
umbra ©   (2007-03-06 11:34) [5]

сервер может быть чувствительным к регистру, т.е. f4calls.dbf и F4calls.dbf - это разные файлы


 
clickmaker ©   (2007-03-06 11:34) [6]


>  [4] Helen   (06.03.07 11:20)

может FtpSetCurrentDirectory надо вызвать сначала или полный путь указать (относительно рута)?


 
Плохиш ©   (2007-03-06 11:35) [7]


> Helen   (06.03.07 11:20) [4]
> ищу в той же папке, что и предидущие файлы

А находиться он где?

PS. В [0] замени цикл repeat на while, иначе при отсутствии требуемых файлов получишь ошибку.


 
Плохиш ©   (2007-03-06 11:38) [8]

Кстати не понятно

> hFind:=FtpFindFirstFile(hFTP, PChar(ss+"*.dbf"), sRec, 0, 0);


> hFind:=FtpFindFirstFile(hFTP, PChar("f4calls.dbf"), sRec, 0, 0);


> ищу в той же папке, что и предидущие файлы

как-то не вяжуться, не находите?


 
Helen   (2007-03-06 11:39) [9]

>Плохиш ©   (06.03.07 11:35) [7]
>А находиться он где?

находится там же

>umbra ©   (06.03.07 11:34) [5]
с регистром все нормально, файлы именуются только маленькими буквами


 
Плохиш ©   (2007-03-06 11:39) [10]


> Helen   (06.03.07 11:39) [9]
> >Плохиш ©   (06.03.07 11:35) [7]
> >А находиться он где?
> находится там же

Осталось выяснить кто-такой ss...


 
Helen   (2007-03-06 11:41) [11]

не нахожу, т.к. ss="01-03-2007", например, т.е. нужно файлы, начинающиеся на ss


 
Плохиш ©   (2007-03-06 11:42) [12]


> почему-то FtpFindFirstFile выдает nill, хотя файл там точно есть

Честно скажу, FtpFindFirstFile я доверяю больше.


 
Helen   (2007-03-06 11:44) [13]

почему, если я зашла в эту папку и скопировала файл руками?


 
Плохиш ©   (2007-03-06 11:57) [14]

В описании FtpFindFirstFile говорится, что ошибку можно получить с помощью функции GetLastError, так и что говорит GetLastError в твоём случае?


 
Плохиш ©   (2007-03-06 11:59) [15]

И где в твоём коде строчка  InternetCloseHandle(hFind);?


 
Плохиш ©   (2007-03-06 12:04) [16]

http://www.cryer.co.uk/brian/delphi/wininet.htm#FtpFindFirstFile

Note:

Be aware that only one search can be made within a given FTP session. Call InternetCloseHandle to close the search handle to close the session handle, otherwise future searches will fail with ERROR_FTP_TRANSFER_IN_PROGRESS.


 
Helen   (2007-03-06 14:27) [17]

Спасибо большое за наводку, InternetCloseHandle(hFind) помог. Теперь все хорошо. Еще раз спасибо.



Страницы: 1 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.034 c
15-1175518322
Ega23
2007-04-02 16:52
2007.04.29
Как по-русски сказать?


2-1176116047
Steep
2007-04-09 14:54
2007.04.29
Че-то совсем туплю..


2-1176440894
Сергий
2007-04-13 09:08
2007.04.29
Дата


2-1176275300
jeen
2007-04-11 11:08
2007.04.29
Как распечатать содержимое фрейма ?


2-1176131833
delphi_
2007-04-09 19:17
2007.04.29
проблемка с процедурой