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