Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1172700372
timself
2007-03-01 01:06
2007.04.29
Как переназначить кнопку закрытия программы [x]?


15-1175721134
Gamer
2007-04-05 01:12
2007.04.29
помогите выбрать звуковуху для старого ПК


15-1175624279
Стас
2007-04-03 22:17
2007.04.29
PII и PIV


15-1175435176
isasa
2007-04-01 17:46
2007.04.29
Многопоточная задача канадских лесорубов.


2-1176126598
vitv
2007-04-09 17:49
2007.04.29
Многострочный DBGrid, поиск информации





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский