如何使用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;
答案 0 :(得分:4)
您的代码在Windows中并不严格正确。是的,您可以将string
(UnicodeString
的别名)转换为COM WideString
,但这会浪费时间和资源。正确的代码是:
var
P: PWideChar;
S: string;
....
P := PWideChar(S);
事实上,由于您使用的是Unicode版本的Delphi,因此使用PChar
(PWideChar
的别名)来放置string
可能是惯用的。
所以我会写:
var
P: PChar;
S: string;
....
P := PChar(S);
现在,这段代码以及在Windows上执行此操作的正确方法在所有平台上都能正常运行。