是否可以在记录中添加字符串列表? EG
TImportStats = record
ATotal:Integer;
BTotal:String;
AList:TStringist;
end;
如果我认为我需要在使用记录之前创建它?
答案 0 :(得分:7)
虽然这是完全合法的,但找到另一种方法可能是谨慎的。当你说:
时,你可以找出问题所在我认为我需要创建它 在使用记录之前
不仅如此,你还需要找到一个消灭它的好时机。如果你忘了这样做,就没有错误,但你的程序会泄漏内存。
如果记录是字符串列表的所有者,那么最好将其包含在类中。这样,字符串列表的构造和销毁将遵循所有Delphi开发人员都熟悉的构造函数/析构函数模式。
如果记录不拥有字符串列表,但只是在字符串列表的生命周期内对它进行引用,那么记录就可以了。但是,如果你这样做,请确保记录的生命周期包含在字符串列表的生命周期内,这样你就不会携带陈旧的引用。
答案 1 :(得分:3)
是的,这应该有效。在创建字符串列表之前,AList将(不可用)。因此,您可以在不创建字符串列表的情况下使用记录的其他元素,但必须在使用之前创建stringlist元素。此外,您还有责任在完成后释放每个字符串列表。
答案 2 :(得分:0)
如果stringlist仅用于TImportStats记录的本地范围, 您可能希望查看Code Central中的StringList value implementation。
这可以避免尝试,创建,最终消除开销。
答案 3 :(得分:0)
我知道它可能已经晚了,但解决问题最优雅的方法是创建一个TStringList的子类,其中包含ATotal和BTotal作为其中的两个新元素。然后你可以根据需要简单地创建和销毁它。这个解决方案简洁明了。