![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закачка файла с ftp-сервера [D6]
Helen © (2006-11-15 10:54:00)Добрый день! Пытаюсь скопировать файл с ftp-сервера двумя способами, и не один не проходит.
1: средствами WinInet, при использовании функции FtpFindFirstFile(MyFTP, PChar(FileName), sRec, 0, 0) не могу понять какого типа должна быть sRec. Может туплю?
2: средствами Indy, сначала все нормально: коннектится, делается
MyFTP.List(FielList, '*.dbf', false),
а MyFTP.Get(FileList.Strings[i], 'c:\Test\'+IntToStr(i)+'.dbf'); не проходит
Anatoly Podgoretsky (2006-11-16 16:48:00) [1]> Helen (16.11.2006 14:18:21) [21]
Отлично, это я хотел из тебя вытянуть, в Windows АПИ нет типа Boolean, только производные до Bool
С Bool лучше работать так Bool =/<> False тогда гарантируется правильность во всех случаях и не в коих случаяч не с True
Helen (2006-11-16 14:56:00) [2]Разобралась, просто в цикле не все хендлы закрыла.
Сергей М. (2006-11-16 14:39:00) [3]
> Helen (16.11.06 14:18) [21]
Ты про notвникла ?
Helen (2006-11-16 14:18:00) [4]Это не из Инди, это из WinInet.
Anatoly Podgoretsky (2006-11-16 13:06:00) [5]> Helen (16.11.2006 12:24:19) [19]
Мне казалось это не функция Дельфи, или это из Инди?
Helen (2006-11-16 12:24:00) [6]по документации должно возвращать Boolean
Anatoly Podgoretsky (2006-11-16 12:13:00) [7]> Helen (16.11.2006 11:14:15) [15]
Не надо ли not добавить
until not InternetFindNextFile(hFind, @sRec);
А оно точно boolean возвращает, есть большое сомнение.
Helen (2006-11-16 12:08:00) [8]Да, у меня есть все проверки и hFind<>nil. Просто не стала весь код писать.
Dmitrij_K (2006-11-16 12:04:00) [9]Для начала надо проверять результат FtpFindFirstFile
hFind:=FtpFindFirstFile
if hFind<>nil then
repeat
until InternetFindNextFile
Helen (2006-11-16 11:14:00) [10]В продолжение темы. Объясните неразумной, что не так делаю:
hFind:=FtpFindFirstFile(hFTP, PChar('*.dbf'), sRec, 0, 0);
repeat
...
until InternetFindNextFile(hFind, @sRec);
почему не ищется следующий файл?
iXT (2006-11-15 17:05:00) [11]
> Helen (15.11.06 12:37) [12]
Так я разве против?
Anatoly Podgoretsky (2006-11-15 13:47:00) [12]> Helen (15.11.2006 12:37:12) [12]
А как же :-)
Helen (2006-11-15 12:37:00) [13]И это замечательно!!!
iXT (2006-11-15 11:50:00) [14]Helen (15.11.06 10:54)
Helen (15.11.06 11:35) [10]
Как девушкам все хотят помочь :)
Helen (2006-11-15 11:35:00) [15]В Indy не проходит само копирование файла: MyFTP.Get(FileList.Strings[i], 'c:\Test\'+IntToStr(i)+'.dbf');
Но мне лучше пользоваться WinInet, т.к. пишу консольное приложение и весит оно в этом случае намноого меньше, чем с Indy.
umbra (2006-11-15 11:32:00) [16]а в инди то что "не проходит"?
Сергей М. (2006-11-15 11:31:00) [17]
> я так долго искала, где же описана структура _WIN32_FIND_DATA
Надо было просто поручить опер.системе выполнить поиск)
Меню Пуск -> Найти ... -> Файлы, имеющие расширение *.pas и содержащие такой-то текст
SpellCaster (2006-11-15 11:31:00) [18]> [5] Helen (15.11.06 11:26)
Виндовый поиск файла *.pas, содержащего текст WIN32_FIND_DATA, помог бы тебе за две минуты.
Helen (2006-11-15 11:30:00) [19]А насчет http://forum.vingrad.ru/index.php?showtopic=55273&view=findpost&p=439445, именно с этого примера я и начала. Только вот еще вопрос, почему нужно открывать файл и записывать его частями, нет ли какой-нить функции типа CopyFile, чтобы сразу весь?
Helen (2006-11-15 11:26:00) [20]Спасибо! Спасибо! Спасибо!
uses Windows помогло, а я так долго искала, где же описана структура _WIN32_FIND_DATA