sách gpt4 ai đã đi

delphi - 自由 TStringList 对象中的错误

In lại 作者:行者123 更新时间:2023-12-03 18:01:38 27 4
mua khóa gpt4 Nike

procedure FreeListObjects( l : TStrings);
var i : integer;
BEGIN
FOR i := 0 TO l.Count -1 DO BEGIN
l.Objects[i].Free;
l.Objects[i] := NIL;
END;
end;



PROCEDURE StringListAdd;
VAR i : INTEGER; Code : LONGWORD;
BEGIN
l := Classes.TstringLIST.CREATE;
FOR i := 0 TO 4 DO BEGIN
Code := i ;
l.AddObject('', TObject(code));
END;
Code := LONGWORD(l.Objects[2]);
FreeListObjects(l);
l.Free;
END;

当我使用 l.OwnsObjects := TRUE 而没有 FreeListObjects(l) 时,会发生错误。

谁来释放这个字符串列表的对象?

1 Câu trả lời

您已经告诉字符串列表它拥有其 Objects 数组中的对象。在这种情况下,它会在您销毁列表时自动调用所有这些值的 Free,就像您的 FreeListObjects 代码一样。

但是那里没有对象!您已经获取了不是对象的 Số nguyên 值,并对它们进行类型转换以将它们强制转换为 TObject。您不能在 Số nguyên 上调用 Free,但在任何代码调用 Free 时,它都不知道原始类型值(value)。进行类型转换时,您告诉编译器您知道自己在做什么,并且编译器相信您。如果您真的不知道自己在做什么,请不要进行类型转换。

你说没有 FreeListObjects 就会出错,但是你 FreeListObjects 会出错。问题是您在不是对象的对象上调用 Free。无论您是在自己的代码中调用它还是让库调用它都不重要。

您可能已经花一些时间使用 C#。在那种语言中,整数会自动“装箱”成真实的对象。这不是 Win32 Delphi 的工作方式。 Delphi 不进行装箱和拆箱。

关于delphi - 自由 TStringList 对象中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1394114/

27 4 0
Bài viết được đề xuất: SQL 通过 ADO 在 Delphi 中返回值
Bài viết được đề xuất: typescript - 更漂亮地将逗号替换为分号
Bài viết được đề xuất: javascript - 使用 WhatsApp HTML 链接分享图片和网址
Bài viết được đề xuất: delphi - 如何在 Delphi 的转换中使用参数
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com