【发布时间】:2015-07-11 04:38:50
【问题描述】:
在 Delphi FMX XE7、Win32 中,我有一个记录类型:
type TSettingsRec = record
SessionTimeOut: Word;
EventString: String[50];
end;
当我将 Target 更改为 Android 时,出现编译器错误:
[DCC 错误] MainForm.pas(45): E2029 ';'预期但找到“[”
我需要定义 EventString 元素的长度 [50],因为 TRecord 实际上是从数据库 (Firebird) 中读取的,该数据库是由 Delphi 7 程序使用 Bin2Hex 写入数据库的(原因只有该程序的作者):
var
rec: TSettingsRec;
settings: string;
SetLength(settings, SizeOf(rec)*2);
BinToHex(@rec, @settings[1]), SizeOf(rec));
我在使用 XE7 (win32) 时有效地解码:
var
rec: TSettingsRec;
settings: String;
SetLength(settings, SizeOf(rec) * 2);
System.Classes.HexToBin(Pchar(settings), @rec, SizeOf(rec));
但这不起作用,当我为 Android 编译时。那么如何在Android平台上指定EventString的长度[50]呢?
【问题讨论】:
-
EventString: array [0..49] of Char;? -
@Abelisto 您错过了长度字节,并且还使用了错误的元素类型。它应该是 AnsiChar 或 Byte。
-
@DavidHeffernan 不。我只是相信平台依赖的编译器必须使用平台兼容的类型。如果不是 - 这是错误的编译器(换句话说就是汇编器)
-
@nolaspeaker 接受或拒绝答案,我们都在等待您的决定!
-
@abelisto 你不明白我说了什么,或者问题在问什么
标签: android delphi firemonkey delphi-xe7