0

私はD2009を手に入れ、それを既存のプロジェクトの1つで使用しました.すべて正常にコンパイルされますが、プロジェクトで正規表現を使用するためにDIRegExを手に入れました.

ただし、 String から RawByteString へ、またはその逆について常に警告が表示されます。例えば

var
  Response : string;
begin
  Response := idHTTP.Get('http://www.somesite.com');
  DIRegEx.SetSubjectStr(Response);
  ......

現在、SetSubjectStr パラメーターは RawByteString 型であり、idHTTP.Get からの応答は単なる文字列です。私がどちらかを持っているのは奇妙に思えます

DIRegEx.SetSubjectStr(utf8string(Response));

また

var
  Response : Utf8String;
begin
  Response := Utf8String(idHTTP.Get......);

私はここで何をすべきか。

4

2 に答える 2

2

DIRegExは明らかにUnicode入力を受け入れないため、オンラインでダウンロードしたものからDIRegExに渡すものへの何らかのデータ変換を実行する以外に選択肢はありません。TIdHTTPは、最終的なデータを渡す前に、データの元のエンコーディング(サーバーによって指定されたもの)からUnicodeへの独自の変換をすでに内部で行っています。TIdHTTPの内部解釈を適用せずに、サーバーが送信するrawバイトを操作する場合は、TMemoryStreamをTIdHTTPに渡してraw出力を受信し、必要な処理を行う必要があります。

于 2009-07-13T22:29:45.010 に答える
0

http://www.micro-isv.asia/2008/08/using-rawbytestring-effectively/が役立つ場合がありますか?

于 2009-07-12T00:57:14.623 に答える