掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ネットからファイル(GIFやHTML等)を取得したいのですが (ID:12013)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> InternetOpen、InternetOpenUrl、InternetReadFile関数つかって WinInet.pas にあるやつ。普段はわたしもこれを使っています。 function GetUrlFile(const URL:string; Stream:TStream):Boolean; var hOpen,hURL:HINTERNET; pBuf:pointer; ReadBytes:DWORD; begin result := false; hOpen := InternetOpen('Arara-Agent',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0); if not Assigned(hOpen) then exit; hURL := InternetOpenURL(hOpen,PChar(URL),nil,0,0,0); if not Assigned(hURL) then begin InternetCloseHandle(hOpen); exit; end; GetMem(pBuf,1024); Stream.Position := 0; try repeat InternetReadFile(hURL,pBuf,1024,ReadBytes); Stream.Write(pBuf^,ReadBytes); until ReadBytes = 0; finally FreeMem(pBuf); InternetCloseHandle(hURL); InternetCloseHandle(hOpen); end; if Stream.Size = 0 then exit; Stream.Position := 0; result := true; end; 普通は TMemoryStream で受け取っています。画像なら TBitmap や TJpegImage TGifImage の LoadFromStream() でセット出来ますし、HTML ドキュメントなら TWebBrowser に直接セットしたり、Memo1 に表示したりできます。もちろん、 ファイルにおとすのも簡単。上記のコードでは、不正な URL を入力したときの 判断が出来ないので改良の余地があります。Indy などのライブラリは、苦労して 使い方を覚えてもバージョンが変わったりすると使えなくなったりするので、なる べく低レベルでやりたいと思っています。ほんとは WinInet より WinSocket で やりたいんで勉強中です。Internet 周りは難しいです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.