Delphi如何识别StringList对象是否被创建

发布于 2024-12-07 15:54:08 字数 230 浏览 0 评论 0原文

我已经在私有部分声明了 TStringList 变量。在按钮单击事件中,我想访问该 TStringList 对象。

sVariable:= TStringList.Create;
sVariable.add('Test1');

现在,每当我每次新创建该按钮时单击该按钮,内存就会分配给该变量。是否有任何属性/函数可以用来确定是否为该变量创建了对象,并且它也不会给出访问冲突错误?

I have declared variable of TStringList in private section. In a button click event I want to access that TStringList object.

sVariable:= TStringList.Create;
sVariable.add('Test1');

Now whenever i click on that button each time its newly created and memory is allocated to that variable. Is there any property/function using which we can determine object is created for that variable or not and it will not give the access violation error also?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

玻璃人 2024-12-14 15:54:08
if not Assigned(sVariable) then
  sVariable:= TStringList.Create;
sVariable.add('Test1');
if not Assigned(sVariable) then
  sVariable:= TStringList.Create;
sVariable.add('Test1');
凹づ凸ル 2024-12-14 15:54:08

另一种方法是通过具有 read 方法的属性来扩展 David 的答案。

TMyForm = class (TForm)
private
  FStrList : TStringList;
public
  property StrList : TStringList read GetStrList;
  destructor Destroy; override;
end;

implementation

function TMyForm.GetStrList : TStringList;
begin
  if not Assigned(FStrList) then
    FStrList := TStringList.Create;
  Result := FStrList;
end;

destructor TMyForm.Destroy;
begin
  FStrList.Free;
  inherited;
end;

编辑:在重写的析构函数中添加了 Free 调用。

Another way to approach it, expanding on David's answer, is through a property with a read method.

TMyForm = class (TForm)
private
  FStrList : TStringList;
public
  property StrList : TStringList read GetStrList;
  destructor Destroy; override;
end;

implementation

function TMyForm.GetStrList : TStringList;
begin
  if not Assigned(FStrList) then
    FStrList := TStringList.Create;
  Result := FStrList;
end;

destructor TMyForm.Destroy;
begin
  FStrList.Free;
  inherited;
end;

Edit: Added the Free call in an overridden destructor.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文