编译简单测试时出现此错误[DCC Fatal Error] UnitUtf8.pas(52): E2158 System.Variants unit out of date or corrupted: missing '@VarFromLStr'
var
S_ENG_UP: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
S_ENG_LO: string = 'abcdefghijklmnopqrstuvwxyz';
...
const
NullValue = 'NullValue';
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: integer;
s: string;
TestData: Variant;
begin
TestData := VarArrayOf([
VarArrayOf([NullValue, UTF8Encode(S_ENG_UP), UTF8Encode(S_ENG_UP), S_ENG_UP, S_ENG_UP]),
VarArrayOf([NullValue, UTF8Encode(S_ENG_LO), UTF8Encode(S_ENG_LO), S_ENG_LO, S_ENG_LO]),
VarArrayOf([NullValue, UTF8Encode(S_RUS_UP), UTF8Encode(S_RUS_UP), S_RUS_UP, S_RUS_UP]),
VarArrayOf([NullValue, UTF8Encode(S_RUS_LO), UTF8Encode(S_RUS_LO), S_RUS_LO, S_RUS_LO])
]);
for i := VarArrayLowBound(TestData, 1) to VarArrayHighBound(TestData, 1) do
for j := VarArrayLowBound(TestData[i], 1) to VarArrayHighBound(TestData[i], 1) do begin
s := VarToStr(TestData[i][j]);
Memo1.Lines.Add(s);
end;
end;
适用于iOS模拟器平台的XE6和XE7下的。但Win32 / 64下一切都很好。无法找到解决方案,而且似乎一切都是"按照预期"因为我在XE6 / 7下都有它。我应该重新编译System.Variants(如何?)或有一些解决方法?第二次构建尝试给了我[DCC Fatal Error] UnitUtf8.pas(52): F2084 Internal Error: AV08603536-R00000004-0
。我需要完全测试Variant数组,因为我应该检查为什么另一个自定义(可能是自Delphi 5以来为兼容性而制作的一些旧版UTF8Encode的副本)在Windows和iOS模拟器下给我不同的国家代码页结果(是的,它在UTF8Encode之后是垃圾,但它是不同的垃圾)。