随笔 - 809  文章 - 0 评论 - 144 阅读 - 770万

首先官方的定义:

  TTypeKind = (tkUnknown, tkInteger, tkChar, tkEnumeration, tkFloat,
    tkString, tkSet, tkClass, tkMethod, tkWChar, tkLString, tkWString,
    tkVariant, tkArray, tkRecord, tkInterface, tkInt64, tkDynArray, tkUString,
    tkClassRef, tkPointer, tkProcedure, tkMRecord);

 

测试自动转换:

复制代码
procedure add(data: array of TValue);
var
  i: Integer;
  key: string;
begin
  for i := 0 to (Length(data) - 1) do
  begin
    if (i mod 2) = 0 then
    begin
      key := data[i].AsString;
    end else begin
      map2.Add(key, data[i]);
    end;
  end;
end;
复制代码

 

 

复制代码
procedure TForm1.btn2Click(Sender: TObject);
var
  key: string;
begin
  add([
  's', '我是一个字符串', // tkUString
  's2', 'c',// tkUString
  'i32', 32, //  tkInteger
  'i64', 9223372036854775708,//2的63次方 - 100 ;  tkInt64
  'ui64', 18446744073709551516, //2的64次方 - 100; 依然是 tkInt64 类型,结果不影响
  'bl', True, // tkEnumeration
  'fl', 2323.23223//tkFloat
  ]);

  for key in map2.Keys do
  begin
    mmo1.Lines.Add(key + ' --- ' +  TValue.From<TTypeKind>(map2.Items[key].Kind).ToString);
  end;

  if map2.Items['bl'].AsBoolean then
  begin
    mmo1.Lines.Add('yes');

  end else begin
    mmo1.Lines.Add('no');
  end;

  //测试uint64,是否正常
  mmo1.Lines.Add(map2.Items['ui64'].AsUInt64.ToString); // 18446744073709551516,结果正常
end;
复制代码

 

 

 

posted on   del88  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示