webページをファイルに保存し、StringListに読み込んでいます。
数が多いとやや時間がかかりすぎるキライがあります。
webページを直接StringListに読み込む方法は?
var URL,Fname:string;
St:TStringList;
-------
St:=TStringList.Create;St.clear;
UrlDownloadToFile(nil, PChar(URL),PChar(Fname), 0, nil);
St.LoadFromFile(Fname);
-------
StringListというか、Stringに取り込む方法です。
IndyのIdHTTPで簡単に出来たような気がするのですが
どうもProxyの関係なのかうまく動かなかったので
WinInetを使ってみました。
一度メモリストリームに取り込んでから
文字列として取得しています。
D2007、WinXPで動作確認しました。
function GetStringFromStream(Stream: TStream): String;
begin
SetLength(Result, Stream.Size);
Stream.Position := 0;
Stream.ReadBuffer(Result[1], Stream.Size);
end;
procedure TForm1.Button5Click(Sender: TObject);
var
SaveFileName, SaveURL: String;
ms: TMemoryStream;
begin
SaveURL := Edit1.Text;
ms := TMemoryStream.Create;
WinInet_URLDownloadToStream1(SaveURL, ms);
ShowMessage(GetStringFromStream(ms));
ms.Free;
end;
WinInet_URLDownloadToStream1はこちらに乗せておきます。
http://delfusa.main.jp/delfusalibrary/20060527212010/WinInetUnit/WinInetUnit.pas
WinInet_URLDownloadToStream2関数でも同様に動作するでしょう。
Fusaさん、ありがとうございました。
ツイート | ![]() |