お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"[Wininet]Internetよりファイルを取得"



 usesにWininetを加えてください。Wininet.dllはInternet Explorerで使われ
ているDLLです。

 InternetからファイルをGETメソッドで取得します。InternetOpenの1番目は
Agent名(Mozilla/4.0とか)なんですが、nilでもOK。2番目のパラメーターに
INTERNET_OPEN_TYPE_PRECONFIGを指定するとレジストリを見に行って、IEと同
じ設定になります。

 Wininetに関する詳細は、
  http://msdn.microsoft.com/workshop/networking/wininet/wininet.asp



function GetFileFromInternet(const AUrl:string; AStream:TStream): boolean;
var
  hSession, hConnect: hInternet;
  Buf: array[0..1023] of Char;
  ReadCount: Cardinal;
begin
  Result := False;
  hSession := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    hConnect := InternetOpenUrl(hSession, PChar(AUrl), nil, 0, 0, 0);
    try
      while True do //ストリームに書き込み
      begin
        if not InternetReadFile(hConnect, @Buf, SizeOf(Buf), ReadCount) then
          Break;
        if ReadCount = 0 then
          Break
        else
        begin
          AStream.Write(Buf, ReadCount);
          Result := True;
        end;
      end;
    finally
      InternetCloseHandle(hConnect);
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;

■使い方■
 FormにMemoとButtonを1つ置いて下さい。

procedure TForm1.Button1Click(Sender: TObject);
var
  M: TMemoryStream;
begin
  if InternetAttemptConnect(0) = ERROR_SUCCESS then
  begin
    M := TMemoryStream.Create;
    try
      if GetFileFromInternet('http://www.inprise.co.jp/', M) then
      begin
        M.Position := 0;
        Memo1.Lines.LoadFromStream(M);
      end else
        Memo1.Lines.Text := '失敗';
    finally
      M.Free;
    end;
  end;
end;

                                      00/05/22 (Mon) ぶんぶん鈴木

Original document by ぶんぶん鈴木    氏 ID:(EZA00106)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum