トルネード

毛利のメモ書き

Delphi TFileClientで非同期ファイル取得

Delphi 10.3の「System.Net.FileClient.pas」にTFileClientというクラスがあります。これを使ってファイルの読み込みを試してみます。

Delphi TFileClientでファイル取得

 

uses
  System.Net.HttpClient,System.Net.URLClient, System.Net.FileClient, System.Types;

 usesは「System.Net.HttpClient,System.Net.URLClient, System.Net.FileClient, System.Types」を追加します。

procedure TForm1.Button1Click(Sender: TObject);
begin
  var FileClient1:TURLClient := TFileClient.CreateInstance;
  var URLResponse1:IURLResponse := FileClient1.Execute('HTTPS', 'https://mjeld.com/index.php',nil,nil);
  var str1 := URLResponse1.ContentAsString();
  OutputDebugString(PChar(str1));
end;

上記のように実装すればインターネット上の文字列を取得できます。

取得したIURLResponseにはContentStream(TStream)が入っていますのでバイナリも取得可能です。

 

Delphi TFileClientでファイル取得

 非同期処理を行う場合、TURLClientのBeginExecute()を使います。

procedure TForm1.Button1Click(Sender: TObject);
begin
  var FileClient1:TURLClient := TFileClient.CreateInstance;
  FileClient1.BeginExecute(hoge,'FILE', 'file:///C:/data/Unit1.pas');
end;

procedure TForm1.hoge(const ASyncResult: IAsyncResult);
begin
  if ASyncResult.IsCompleted then
  begin
    var res1 := TURLClient.EndAsyncURL(ASyncResult);
    var s := res1.ContentAsString();
    OutputDebugString(PChar(s));
  end;

end;

BeginExecuteの1つ目の引数にhogeメソッドを指定し、その後の引数をFILEとローカルファイル(Unit1.pas)を指定しています。Unit1.pasはテキストファイルですので、ContentAsString()を使いStringに変換して出力できます。

 

mojelder.hatenablog.com

 

mojeld.gger.jp