Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по FtpGetFile


Страницы:   1 2 3 4 5 6

SortoVaritu ©   (2009-06-19 10:17:00) 

Вопрос в следующем. На FTP лежит несколько файлов. Эти несколько файлов являются разрезанным архивом rar. При использовании FTPGetFile файлы скачиваются на мой компьютер. НО при попытке их собрать в архив имеем ошибку контрольной суммы. Файлы по 100 МБ. Для доступа к FTP используется прокси. В чем может быть проблема?


SortoVaritu   (2009-06-25 18:21:00) [1]

В чистом проекте. Твой код я вставил в абсолютно чистый проект.


Сергей М.   (2009-06-25 17:25:00) [2]

Ты экспериментируешь в заведомо "чистом" тестовом проекте или в "боевом" ?


SortoVaritu   (2009-06-25 17:12:00) [3]

Хотя в общем ты прав. Думаешь проблема с компилятором или с с системой? Возможно с Wininet.dll?


Сергей М.   (2009-06-25 16:29:00) [4]


> последний параметр меня смущает


Он тебя не должен смущать, ибо у меня код успешно работает.
А что собссно смущает-то ? Уже жевали-пережевали этот вопрос в начале топика ..


SortoVaritu   (2009-06-25 16:02:00) [5]

function FtpCommand(
hConnect: HINTERNET;
fExpectResponse: BOOL;
dwFlags: DWORD;
lpszCommand: PChar;
dwContext: DWORD;
var hFtpCommand: HINTERNET): BOOL;
stdcall; external 'wininet.dll' name 'FtpCommandA';
Если ты это имеешь ввиду, то я же у тебя ее и скопировал. Только вот последний параметр меня смущает.


Сергей М.   (2009-06-25 15:51:00) [6]

А декларация FTPCommand у тебя случаем не кривая ?
Покажи-ка ее ..


SortoVaritu   (2009-06-25 14:54:00) [7]

Да. Пошагово отлаживал.


Сергей М.   (2009-06-25 13:33:00) [8]

А как узнал, что имеенно FTPCommand, а не что-то иное ?
В отладике пошагово или как ?


SortoVaritu   (2009-06-25 13:21:00) [9]

Так точно. FTPCommand выбрасывает одну и ту же ошибку


Сергей М.   (2009-06-25 12:57:00) [10]

Хочешь сказать, что способ доступа не влияет ?

Т.е. один и тот же код (без использования прокси) не работает ни здесь ни там, возбуждая одно и тио же исключение на одной и той же строчке ?

Ну хорошо.
А мойкод (один в один или без использования прокси) ТОЖЕ возбуждает исключение при разных условиях способах доступа ?


SortoVaritu   (2009-06-25 12:50:00) [11]

У меня есть и такой и такой. Все это я делаю дома. Дома у меня доступ прямой. Прямое соединение через провайдера.


Сергей М.   (2009-06-25 12:45:00) [12]


> На прямую делаю


Доступ в Тырнет у тебя прямой или из корп.сети ?


Сергей М.   (2009-06-25 12:40:00) [13]

И какой же размер у 1.txt ?


SortoVaritu   (2009-06-25 12:23:00) [14]

Блин. Я уже и прокси не использую. На прямую делаю. Чтобы исключить любую вероятность его вмешательства.


Сергей М.   (2009-06-25 12:15:00) [15]


> Для доступа к FTP используется прокси


Ну и где у тебя в коде используется прокси ?
Нпапрямую же лезешь к ресурсу ..


SortoVaritu   (2009-06-25 11:41:00) [16]

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;


Сергей М.   (2009-06-25 11:25:00) [17]


> код внес один в один. только сервер свой подставил


И это ты называешь "один в один" ?)
Приводи текст с изменениями ..


SortoVaritu   (2009-06-25 11:11:00) [18]

код внес один в один. только сервер свой подставил ну и имя файла тож который на сервере лежит а так один в один


Сергей М.   (2009-06-25 11:05:00) [19]

Ты это код пробовал "один в один" ?
Или свои изменения внес ?
Если внес, показывай весь этот фрагмент со своими изменениями ..


SortoVaritu   (2009-06-25 10:59:00) [20]

Windows XP SP3. Delphi 7.
Я вот тоже думаю, что не в проге дело.


Страницы:   1 2 3 4 5 6

Наверх

Титульная страница Поиск, карта сайта Написать письмо