如何使用Delphi在Android平台上将String转换为PWideChar

时间:2017-09-27 14:30:43

标签: android delphi firemonkey

如何使用Delphi将字符串转换为Android平台中的PwideChar?在Windows应用程序中完成使用..

var    
  PW: PWideChar;
begin
  PW := pwidechar(widestring(String));
  PW := pwidechar(widestring(Reply));
  A := ExistWordInString(PW,String,[soWholeWord,soDown]); //A : Boolean

....
end;

问题是Undeclared identifier: 'WideString',如何解决这个问题?

Delphi 10 Berlin,Firemonkey,Android

更新

嗯,根据http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Migrating_Delphi_Code_to_Mobile_from_Desktop,我们不能使用宽字符串,我想不出另一种方法来使用字符串这个函数:

function ExistWordInString(aString:PWideChar;aSearchString:string;aSearchOptions: TStringSearchOptions): Boolean;
var
  Size : Integer;
Begin
  Size:=StrLen(aString);
  Result := SearchBuf(aString, Size, 0, 0, aSearchString, aSearchOptions)<>nil;

1 个答案:

答案 0 :(得分:4)

您的代码在Windows中并不严格正确。是的,您可以将stringUnicodeString的别名)转换为COM WideString,但这会浪费时间和资源。正确的代码是:

var    
  P: PWideChar;
  S: string;
....
P := PWideChar(S);

事实上,由于您使用的是Unicode版本的Delphi,因此使用PCharPWideChar的别名)来放置string可能是惯用的。

所以我会写:

var    
  P: PChar;
  S: string;
....
P := PChar(S);

现在,这段代码以及在Windows上执行此操作的正确方法在所有平台上都能正常运行。