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

标签 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,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 中并不严格正确。是的,您可以将 string(UnicodeString 的别名)转换为 COM WideString,但这是浪费时间和资源。正确的代码是:

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

事实上,由于您使用的是 Unicode 版本的 Delphi,因此使用 PChar(PWideChar 的别名)可能是惯用的,以适应 字符串.

所以我会写:

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

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

关于android - 如何使用 Delphi 在 Android 平台上将 String 转换为 PWideChar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46450541/

相关文章:

android - 使用 Adob​​e AIR 开发 Android 移动应用程序

android - 如何在 Android 中为每个 ViewPager 显示一个 JSON 对象?

java - Eclipse 中的按钮按下事件 (Android)

delphi - 如何创建一个类似对话框的组件,允许在其中放置其他控件?

android - 如何将我的应用程序保留在前台?

php - Login fromAndroid : Api Key or Session Variables , 哪个更好。?

delphi - 从 INI 文件更改 DataSnap 服务器端口

multithreading - 如何在Delphi中进行异步编程?

delphi - 在 OpenGL 渲染上下文之上叠加图形

android - 从 Delphi Firemonkey XE5 应用程序在 Android 上拍照