【发布时间】:2011-11-18 18:33:19
【问题描述】:
我正在寻找有关在内存中保存 CSV(逗号分隔值)表的最合适数据结构的建议。 它应该涵盖两种情况:有和没有标题的表格。 如果表包含表头,则所有行的所有字段都由键->值对确定,其中键是表头中的名称,值是字段的适当内容。 如果表不包含标题,则行只是字符串列表或键名的键->值对(如“COL1”、“COL2”、...“COLn”)。
我正在同时寻找最简单(更少代码)和最通用的解决方案。
我正在考虑以下子类化,但怀疑它是否是正确/有效的实现方式:
TCSV = class (TObjectList<TDictionary<string, string>>)
...
public
constructor Create(fileName: string; header: Boolean; encoding: string = '';
delimiter: Char = ';'; quoteChar: Char = '"'); overload;
...
end;
看起来我必须为每一行字段保留键。 TDictionary<string, TStringList> 呢?这会是一个更好的解决方案吗?
【问题讨论】:
-
在我看来有点像二维数组......
-
但是数组只能有一个整数索引。他希望能够按列名引用字段。
-
@kenneth 通过建立索引来解决这个问题
-
您需要使用数据感知控件吗?如果是这样,我的 JvCsvDataSet 将是完美的。