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

4
如何在Android平台使用Delphi将字符串转换为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,我们不能使用widestring,在这个函数中我想不到其他使用字符串的方法:
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个回答

8

你的代码在Windows上并不完全正确。是的,你可以将 string(一个别名为 UnicodeString 的类)转换为COM WideString,但这样做会浪费时间和资源。正确的代码如下:

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

事实上,由于您正在使用Unicode版本的Delphi,因此使用PCharPWideChar的别名)可能是惯用的,以便与string并存。所以我会这样写:
var    
  P: PChar;
  S: string;
....
P := PChar(S);

现在,这段代码不仅是在Windows上正确的实现方式,同样也能在所有平台上使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接