Форум: "Основная";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизПоиск файла на 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c