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

How to convert String to PWideChar in Android Platform using Delphi

如何使用 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 柏林,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;

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

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

事实上,由于您使用的是 Delphi 的 Unicode 版本,因此使用 PCharPWideChar 的别名)可能是惯用的,以适应 [=12] =].

所以我会写:

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

现在,这段代码以及在 Windows 上执行此操作的正确方法同样适用于所有平台。