Delphi 2009 - 对RawByteString转换警告的隐式字符串

时间:2009-07-12 00:34:15

标签: delphi unicode delphi-2009 rawbytestring

我刚接触到D2009并将其与我们现有的一个项目一起使用 - 所有这些都编译得很好但是我刚刚选择了DIRegEx在项目中使用了一些正则表达式。

然而,它始终向StringByteString发出有关String的警告,反之亦然。 例如

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......);

我应该在这做什么。

2 个答案:

答案 0 :(得分:2)

由于DIRegEx显然不接受Unicode输入,因此您别无选择,只能执行从在线下载到传递给DIRegEx的数据的某种数据转换。在将最终数据传递给您之前,TIdHTTP已经在内部从数据的原始编码(由服务器指定)到Unicode进行自己的转换。如果你想对服务器发送的原始字节进行操作,而没有对其应用TIdHTTP的内部解释,那么你必须将TMemoryStream传递给TIdHTTP以接收原始输出,然后用它做任何你需要的事情。 / p>

答案 1 :(得分:0)