Главная страница
    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.044 c
1-1172849311
Ш-К
2007-03-02 18:28
2007.04.29
Хранить интерфейсы в TStrings


15-1175637157
SerJaNT
2007-04-04 01:52
2007.04.29
Положение через random


3-1171269054
Ламерок
2007-02-12 11:30
2007.04.29
Как узнать сушествует ли запись в ячейке поля?


15-1175481818
SerJaNT
2007-04-02 06:43
2007.04.29
Проблема с картой памяти


2-1176192999
alles
2007-04-10 12:16
2007.04.29
Как обьявить функцию?





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