- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Delphi RIO 10.3.3。
当我将 Ansi 字符串作为 const 数组的元素之一传递时,string() 转换对其不起作用。为了让它工作,我必须先将 VAnsiString 转换为 AnsiString(),然后再应用 String() 转换。
我在网上看到的大多数类似示例都使用直接 String() 转换。
这是 RIO 中的错误还是我遗漏了什么?
function TForm1.VarRecToStr(AVarRec: TVarRec): string;
const
Bool : array[Boolean] of string = ('False', 'True');
begin
case AVarRec.VType of
vtInteger: Result := IntToStr(AVarRec.VInteger);
vtBoolean: Result := Bool[AVarRec.VBoolean];
vtChar: Result := AVarRec.VChar;
vtExtended: Result := FloatToStr(AVarRec.VExtended^);
vtString: Result := AVarRec.VString^;
vtPChar: Result := AVarRec.VPChar;
vtObject: Result := AVarRec.VObject.ClassName;
vtClass: Result := AVarRec.VClass.ClassName;
//vtAnsiString: Result := string(AnsiString(AVarRec.VAnsiString));
vtAnsiString: Result := string(AVarRec.VAnsiString);
vtCurrency: Result := CurrToStr(AVarRec.VCurrency^);
vtVariant: Result := string(AVarRec.VVariant^);
vtWideString: Result := string(WideString(AVarRec.VWideString));
vtUnicodeString:
Result := string(AVarRec.VUnicodeString);
else
result := '';
end;
end;
function TForm1.VarArrayToStr(AVarArray: array of const): string;
var
i : integer;
begin
result := '';
for i := 0 to High(AVarArray) do
result := result + VarRecToStr( AVarArray[i] );
end;
procedure TForm1.Button1Click(Sender: TObject);
var
w: WideString;
s: shortstring;
an: Ansistring;
begin
//
w := 'Wide';
s := 'Short';
an := 'Ansi';
ShowMessage(VarArrayToStr([w,s,an, 10]));
end;
输出:
最佳答案
像 UnicodeString
和 WideString
一样,AnsiString
作为 untyped< 存储在 TVarRec
中/em> 指向其数据负载的指针。您必须将该指针转换为 AnsiString
(或至少转换为 PAnsiChar
),以便 RTL 正确访问 AnsiString
的数据(如果需要,包括它的 StrRec
header )。您正在尝试将未类型化的 Pointer
按原样 直接类型转换为 UnicodeString
,这将不起作用。编译器会接受它,但它会假定指针指向 UnicodeString
的有效负载,而不是指向 AnsiString
的有效负载。因此,您需要将指针类型转换为 PAnsiChar
或 AnsiString
以便 RTL 知道在分配给 期间将数据从 ANSI 转换为 Unicode UnicodeString
.
关于Delphi RIO - 当 Ansi 字符串是 const 数组的一部分时,Ansi 到字符串的转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63505674/
我正在使用rdf4j库来导出XML文件。我使用org.eclipse.rdf4j.rio.RDFWriter将其保存到文件中,并且我需要定义基本名称空间。因此,我希望拥有这样的东西:。我知道我可以使用
我正在尝试在 RIO 应用程序中设置日志记录;但是,我似乎不了解日志记录界面。 RIO 文档鼓励定义记录器并按如下方式运行应用程序: withLogFunc logOptions $ \lf -> d
有人有如何在node-rio中使用sourceAndEval函数的示例吗? https://github.com/albertosantini/node-rio 我可以仅使用 eval 来运行基本示例
使用 rio.plot.show 后如何添加颜色条? 我尝试了很多东西,但遇到了各种错误 这是我尝试过的一种方法: fig, ax = plt.subplots(figsize = (16, 16))
RIO 在这里代表 Windows8 'Registered I/O'网络扩展。从示例代码来看,似乎无论您是将 RIONotify 与事件还是 IO 完成端口一起使用,您基本上最终都会编写相同的循环,
我已使用所需组件填充了表单,并将示例代码粘贴到了按钮单击事件中。 我已添加 TStringDynArrayarray 和 TSearchOption 类型声明,但出现编译错误,如下所示。 unit d
有没有办法在启动 IDE 时摆脱烦人的欢迎页面? 对于某些以前的版本,您可以通过注册表完成此操作,但我可以在 Rio 中找到它。尝试将文件夹“欢迎页面”重命名为其他名称,但随后出现错误 - 找不到页面
我对 Delphi 10.3 Rio 内联变量声明感到非常兴奋。但是我遇到了奇怪的问题,似乎我需要在内联声明后初始化记录: program Project8; {$APPTYPE CONSOLE} {
有没有办法在 iOS 中使用 MVVMCross 实现方法绑定(bind)?我在视频或教程中看不到此类绑定(bind)的示例... ImageNavigationViewModel: publ
我有一个曾经在 Delphi Seattle 创建的项目,现在我想搬到 Delphi Rio。我使用 findfirst/findnext 读取外部 SD 卡上的目录结构 i := findfir
我的代码: require 'rio' rio('nice.jpg') < rio('http://farm4.static.flickr.com/3134/3160515898_59354c9733
我正在使用 RIO monad 和 RIO 库,并且想添加日志记录。 RIO 日志函数,如 logInfo,将 Utf8Builder 作为参数,它是 ByteString 构建器的包装器。我想在我的
.NET 团队是否有任何计划让 Windows 8/Server 2012 中引入的 RIO 套接字在 .NET 中可用? 在 .NET 中使用它们的过渡期间我有哪些选择 - 扩展 Socket 类?
我正在尝试将 Servant 身份验证(servant-auth-server 包)与 RIO 作为我的处理程序 monad 结合使用,以避免出现 exceptT 反模式。但是,我无法正确排列类型以处
我有一个 HTTPRepository使用存储库的 URL 进行初始化。我使用 RepositoryConnection检索和添加(天气)数据到存储库。从 Web 服务中检索数据,然后将其转换为 RD
我有一个 ListView ,它绑定(bind)到一个字符串数组: 我的项目模板只是一个 TextView ... 再次使用瑞士... local:MvxBind="Text " /> 但
我正在尝试使用 GeoText 生成国家/地区提及,但无法识别像里约热内卢、里约热内卢这样的城市。我查了字典,里面那些城市都可以。 输入: text = "里约热内卢、拉斯维加斯、纽约" geo =
我正在尝试通过服务器端路由使用 Meteor 访问 Rserve 服务器来调用 R 代码。允许访问 Rserve 的 Node.js 模块是 node-rio我在 meteorhacks:npm 中使
我使用 RIOSend 通过分布式网络发送部分 TCP 数据。 Nagle 已关闭以达到最小延迟。 当目的地是本地时,一切看起来都不错,但如果是真正的远程(大约 40 毫秒 ping)目的地,我会看到
我在让 winsock RIO 工作时遇到了问题。似乎每次我发布 RIOReceive 时,它都会立即返回并传输 0 个字节,而我的对等方无法通过消息。 发布 RIOReceive 后,我等待 R
我是一名优秀的程序员,十分优秀!