小编tao*_*oxl的帖子

无效的类型转换:在64位平台上将记录转换为tobject

它适用于32位平台.但这里不是64位的例子

  TVerbInfo = packed record
    Verb: Smallint;
    Flags: Word;
  end;

var
  VerbInfo: TVerbInfo;
  strList : TStringList;
  verb : Smallint;
  flags : Word;
begin
  strList := TStringList.create();
  .....
  verbInfo.verb := verb;
  verbInfo.flags := flags;
  strList.addObject('verb1',TObject(VerbInfo));  //invalid typecast happened here
end;
Run Code Online (Sandbox Code Playgroud)

谁能帮我?非常感谢你

delphi 64-bit casting record tobject

5
推荐指数
1
解决办法
1071
查看次数

如何在 Delphi XE4 中将 AnsiString 转换为 UnicodeString

exzample code:
var
  str1 : String;
  str2 : AnsiString;
  ....
  str2 := ....;
  str1 := String(str2);  
Run Code Online (Sandbox Code Playgroud)

我按照上面的方法进行了转换,但没有成功。我发现 str1 中丢失了一些数据。是否有安全的方法将 AnsiString 转换为 UnicodeString?

delphi unicode-string ansistring delphi-xe4

3
推荐指数
1
解决办法
2万
查看次数

为什么FloatToText在不同的项目中返回不同的值?

我正在使用FloatToText这种方式:

function ExFloatToStr(Value: Extended): string;
var
  Buffer: array[0..63] of Char;
  FormatSettings: TFormatSettings;
begin
  GetLocaleFormatSettings(GetUserDefaultLCID, FormatSettings);
  SetString(Result, Buffer, FloatToText(Buffer, Value, fvExtended, ffGeneral,
    18, 0, FormatSettings));
end;
Run Code Online (Sandbox Code Playgroud)

如果我传递给这个函数值9229.99,它返回一个字符串值9229.9900000000016,但它不是我想要的.当我创建一个新项目并在那里复制上面的代码时,它运行良好.它返回9229.99.

他们在不同项目中工作的原因可能是什么?

delphi floating-point floating-point-precision

2
推荐指数
1
解决办法
428
查看次数