![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ICS под XP
TUser © (2004-10-01 13:40:00)Вот. Начинаю мучаться с WinXP. Я понимаю, конечно, что эта система - верх совершенства и добродетели, но некоторые проблемы все-таки возникли.
Конкретно. Есть совершенно работающая и давно отлаженная программа, которая что-то качает по FTP. Используется библиотека ICS. Под 2000 и NT4, а также под 9х все работает как часы. Под ХР иногда тоже работает, но переодически (примерно в 10% случаев) возникает Exception на команде Quit. Т.е. все скачивается нормально, но отлогиниться от сервера почему-то не можем. При следующей попытке, естественно, не можем войти - т.к. мы уже там. Проблема возникает и под юзером, и под админом. Скажу сразу, что код прописан в dll, но думаю это не важно.
Что такого особенного в команде Quit? Вот код
function FTPLoad(var AC:string):boolean;
begin
Form1.Memo1.Lines.Clear;
try
result:=length(AC)=4;
if result then
try
FTP.HostDirName:=FTPHost+'/'+copy(AC,2,2);
FTP.HostFileName:=GetFtpFileName(AC);
FTP.LocalFileName:=TempFolder+GetLocalFileName(AC);
if not FTP.Open then
raise Exception.Create('');
if not FTP.User then
raise Exception.Create('');
if not FTP.Pass then
raise Exception.Create('');
if not FTP.TypeSet then
raise Exception.Create('');
if not FTP.Cwd then
raise Exception.Create('');
if not FTP.Get then
raise Exception.Create('');
AC:=FTP.LocalFileName;
result:=Fileexists(AC);
FTP.HostDirName:=copy(FTP.HostDirName,1,length(FTP.HostDirName)-3);
if not FTP.Quit then
raise Exception.Create('');
except
MessageBox(W,'FTP v jope, sorry :(','GREATE BUG',MB_OK);
FTP.Quit;
result:=false;
end;
finally
Form1.Hide;
end;
end;
Lord de Mon (2004-10-01 17:14:00) [1]А как насчет дисконнекта?