我想动态加载并显示TVirtualStringTree
来自一些不同 SQL 表的数据。这意味着每列的标题和内容每次都会包含不同类型的数据。
我的问题是如何优化内存使用、记录的定义和这种情况下的指针。
我的想法是这样做:
type
TDataType = (dtUnknown, dtString, dtInteger, dtText, dtFloat, dtDateTime, dtDate, dtTime, dtBoolean);
TData = record
DataType: TDataType;
AsString: String;
AsInteger: Integer;
AsText: TStrings;
AsWord: Word;
AsDateTime: TDateTime;
AsDate: TDate;
AsTime: TTime;
AsBoolean: Boolean;
end;
TTreeData = array of TData;
PTreeData= ^TTreeData;
实际上,记录中只有两个字段将包含数据:(DataType
一直)和第二个字段,取决于DataType
定义的(例如AsString
,AsInteger
)。初始化 Node 时,其他字段也会分配为内存吗?我也不喜欢DataType
分配给每个节点的事实。必须有一种简单的方法来优化此记录。
请提出一些建议。