掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TClientSocketのリファレンスは? (ID:1564)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ここの行で止まっていますね。 InternetQueryDataAvailable(hFile, request, 0, 0); 約3分後に帰ってきた requestの値は 0でした。 requestの値を1000に固定した以下のコードなら無事に送信完了します。 ※ ただし request=abled の前提なので、値が違ってる場合の対処は省略。 .................... // ファイルを開く hFile := FtpOpenFile(hFtpSession, PChar(RemotePath), GENERIC_WRITE, FTP_TRANSFER_TYPE_BINARY, 0); //InternetQueryDataAvailable(hFile, request, 0, 0); request := 1000; Stream := TFileStream.Create('C:\ftptest\test.lzh', fmOpenRead); Buffer := GetMemory(request+1); // バッファの準備 try repeat request := Stream.Read(Buffer[0], request); // Streamから読込み if request = 0 then break; //読み終わりなら送信完了 Buffer[request] := #0; // 書き込み if not InternetWriteFile(hFile, Buffer, request, abled) then begin raise EWinInetError.Create('アップロード中にエラーが発生しました。'); end; Application.ProcessMessages; Sleep(0); Inc(finished, abled); //経過表示 if Assigned(mOnUploading) then OnUploading(Self,RemoteFile,Stream.Size,finished,abled,Cancel); until Cancel; finally FreeMemory(Buffer); Stream.Free; InternetCloseHandle(hFile); InternetCloseHandle(hFtpSession); InternetCloseHandle(hInternet); end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.