首先官方的定义:
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;
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/17391487.html