-
Вот кстати еще хотел спросить. Чем отличается запрос файла командой FTPGetFile и командой RETR.
-
> у меня всегда такой мусор валяецца
И кому, как думаешь, интересно или приятно взирать на твой "мусор" ?
Ты пойми - если ты процитировал некий код, то подразумевается, что ты уверен в том что он имеет прямое отношение к твоей задаче или проблеме в ее решении, т.е. он имеет некое осмысленное немаловажное значение, коль скоро он фигурирует ..
> Чем отличается запрос файла командой FTPGetFile и командой > RETR
FTPGetFile неявно подает команду RETR, получает содержимое удаленного файла и записывает полученное содержимое в указанный тобой файл.
-
Проще говоря FTPGetFile так же использует команду RETR для доступа к файлу.
-
Конечно. А как же иначе ?
-
Хм. Тогда я вот думаю. Решится ли мой вопрос с разрывом сессии, если я буду использовать напрямую RETR вместо FTPGETFile.
-
Ты уже код [78] изучил ? Опробовал на своих "больших" файлах ? Каковы результаты ? Излагай подробно и дословно все что видишь при его выполнении ..
-
Результат точно такой же. Access violation at adress 77C32A16 in module msvcrt.dll. Read of adress FFFFFFFF
-
Что за ОС ? Какая версия Делфи ?
-
Windows XP SP3. Delphi 7. Я вот тоже думаю, что не в проге дело.
-
Ты это код пробовал "один в один" ? Или свои изменения внес ? Если внес, показывай весь этот фрагмент со своими изменениями ..
-
код внес один в один. только сервер свой подставил ну и имя файла тож который на сервере лежит а так один в один
-
> код внес один в один. только сервер свой подставил
И это ты называешь "один в один" ?) Приводи текст с изменениями ..
-
function FtpCommand(
hConnect: HINTERNET;
fExpectResponse: BOOL;
dwFlags: DWORD;
lpszCommand: PChar;
dwContext: DWORD;
var hFtpCommand: HINTERNET): BOOL;
stdcall; external 'wininet.dll' name 'FtpCommandA';
const
url = 'vh22.win.hoster.by';
procedure TForm1.Button5Click(Sender: TObject);
var
hInet, hFTPSession, hFile: HINTERNET;
RCode, RTLen: Cardinal;
RText: String;
begin
hInet := InternetOpen('FTP', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
Win32Check(Assigned(hInet));
try
hFTPSession := InternetConnect(hInet, 'vh22.win.hoster.by', 21, login, password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
Win32Check(Assigned(hFTPSession));
try
Win32Check(FtpCommand(hFTPSession, True, FTP_TRANSFER_TYPE_BINARY, 'RETR 1.txt', 0, hFile));
try
RTLen := 255;
SetLength(RText, RTLen);
RCode := 12003; Win32Check(InternetGetLastResponseInfo(RCode, PChar(RText), RTLen));
SetLength(RText, RTLen);
ShowMessage('Response code = ' + IntToStr(RCode) + #10#10'Response text is'#10#10 + RText)
finally
InternetCloseHandle(hFile);
end;
finally
InternetCloseHandle(hFTPSession);
end;
finally
InternetCloseHandle(hInet);
end;
end;
-
> Для доступа к FTP используется прокси
Ну и где у тебя в коде используется прокси ? Нпапрямую же лезешь к ресурсу ..
-
Блин. Я уже и прокси не использую. На прямую делаю. Чтобы исключить любую вероятность его вмешательства.
-
И какой же размер у 1.txt ?
-
> На прямую делаю
Доступ в Тырнет у тебя прямой или из корп.сети ?
-
У меня есть и такой и такой. Все это я делаю дома. Дома у меня доступ прямой. Прямое соединение через провайдера.
-
Хочешь сказать, что способ доступа не влияет ?
Т.е. один и тот же код (без использования прокси) не работает ни здесь ни там, возбуждая одно и тио же исключение на одной и той же строчке ?
Ну хорошо. А мой код (один в один или без использования прокси) ТОЖЕ возбуждает исключение при разных условиях способах доступа ?
-
Так точно. FTPCommand выбрасывает одну и ту же ошибку
|