В 4.х версиях (слышал, что и вплоть до последних, сам не проверял) происходят утечки памяти из-за бага, который выглядит примерно так
[more]Блок памяти был выделен и не освобожден. Размер: 20
This block was allocated by thread 0xCEC, and the stack trace (return addresses) at the time was:
403246 [sys\system.pas][System][@GetMem][2654]
404AA7 [sys\system.pas][System][TObject.NewInstance][8807]
404E6E [sys\system.pas][System][@ClassCreate][9472]
56891E [DBGridEh.pas][DBGridEh][TColumnsEhList.Create][21502]
478493 [Controls.pas][Controls][TControl.Perform][5021]
52D42A [DBGridEhFindDlgs.pas][DBGridEhFindDlgs][TDBGridEhFindDlg.FillFindColumnsList][341]
52D4F5 [DBGridEhFindDlgs.pas][DBGridEhFindDlgs][TDBGridEhFindDlg.cbFindInChange][357]
44F5F6 [StdCtrls.pas][StdCtrls][TCustomEdit.Change][2158]
511D6A [DBCtrlsEh.pas][DBCtrlsEh][TCustomDBEditEh.Change][2009]
517786 [DBCtrlsEh.pas][DBCtrlsEh][TCustomDBComboBoxEh.Change][5985]
44F91B [StdCtrls.pas][StdCtrls][TCustomEdit.CMTextChanged][2253]
Блок в настоящее время используется для объекта класса: TColumnsEhList
Выделенный номер стал: 935159
//skipped[/more]
Возникает из-за того, что в русскоязычной dfm-ке "потерялась" ссылка на обработчик OnDestroy формы. Лечится так (спасибо NextMan с скруля)
[more]После строк
object DBGridEhFindDlg: TDBGridEhFindDlg
Left = 236
Top = 110
...
...
...
Position = poScreenCenter
OnCreate = FormCreate
следует вставить строчку
OnDestroy = FormDestroy[/more]
Однако, после некоторой правки исходников вылезла уже другая утечка
[more]Блок памяти был выделен и не освобожден. Размер: 20
This block was allocated by thread 0x994, and the stack trace (return addresses) at the time was:
403246 [sys\system.pas][System][System.@GetMem][2654]
405BF5 [sys\system.pas][System][System.@NewAnsiString][12429]
40628D [sys\system.pas][System][System.@LStrSetLength][13786]
42EE7F [common\Classes.pas][Classes][Classes.TReader.ReadString][7110]
42E7CA [common\Classes.pas][Classes][Classes.TReader.ReadPropValue][6900]
42E3BB [common\Classes.pas][Classes][Classes.TReader.ReadProperty][6814]
42D5EA [common\Classes.pas][Classes][Classes.TReader.ReadCollection][6422]
42E860 [common\Classes.pas][Classes][Classes.TReader.ReadPropValue][6915]
42E3BB [common\Classes.pas][Classes][Classes.TReader.ReadProperty][6814]
42DD0E [common\Classes.pas][Classes][Classes.TReader.ReadDataInner][6607]
48090A [Controls.pas][Controls][Controls.TWinControl.SetParent][9787]
Блок в настоящее время используется для объекта класса: AnsiString
Выделенный номер стал: 590207[/more]
Никто не встречался с решением?
добавлено: посоветовали сделать ребилд проекта - сделал. Пока ошибок больше не было. Посмотрю, отпишусь.
[more]Блок памяти был выделен и не освобожден. Размер: 20
This block was allocated by thread 0xCEC, and the stack trace (return addresses) at the time was:
403246 [sys\system.pas][System][@GetMem][2654]
404AA7 [sys\system.pas][System][TObject.NewInstance][8807]
404E6E [sys\system.pas][System][@ClassCreate][9472]
56891E [DBGridEh.pas][DBGridEh][TColumnsEhList.Create][21502]
478493 [Controls.pas][Controls][TControl.Perform][5021]
52D42A [DBGridEhFindDlgs.pas][DBGridEhFindDlgs][TDBGridEhFindDlg.FillFindColumnsList][341]
52D4F5 [DBGridEhFindDlgs.pas][DBGridEhFindDlgs][TDBGridEhFindDlg.cbFindInChange][357]
44F5F6 [StdCtrls.pas][StdCtrls][TCustomEdit.Change][2158]
511D6A [DBCtrlsEh.pas][DBCtrlsEh][TCustomDBEditEh.Change][2009]
517786 [DBCtrlsEh.pas][DBCtrlsEh][TCustomDBComboBoxEh.Change][5985]
44F91B [StdCtrls.pas][StdCtrls][TCustomEdit.CMTextChanged][2253]
Блок в настоящее время используется для объекта класса: TColumnsEhList
Выделенный номер стал: 935159
//skipped[/more]
Возникает из-за того, что в русскоязычной dfm-ке "потерялась" ссылка на обработчик OnDestroy формы. Лечится так (спасибо NextMan с скруля)
[more]После строк
object DBGridEhFindDlg: TDBGridEhFindDlg
Left = 236
Top = 110
...
...
...
Position = poScreenCenter
OnCreate = FormCreate
следует вставить строчку
OnDestroy = FormDestroy[/more]
Однако, после некоторой правки исходников вылезла уже другая утечка
[more]Блок памяти был выделен и не освобожден. Размер: 20
This block was allocated by thread 0x994, and the stack trace (return addresses) at the time was:
403246 [sys\system.pas][System][System.@GetMem][2654]
405BF5 [sys\system.pas][System][System.@NewAnsiString][12429]
40628D [sys\system.pas][System][System.@LStrSetLength][13786]
42EE7F [common\Classes.pas][Classes][Classes.TReader.ReadString][7110]
42E7CA [common\Classes.pas][Classes][Classes.TReader.ReadPropValue][6900]
42E3BB [common\Classes.pas][Classes][Classes.TReader.ReadProperty][6814]
42D5EA [common\Classes.pas][Classes][Classes.TReader.ReadCollection][6422]
42E860 [common\Classes.pas][Classes][Classes.TReader.ReadPropValue][6915]
42E3BB [common\Classes.pas][Classes][Classes.TReader.ReadProperty][6814]
42DD0E [common\Classes.pas][Classes][Classes.TReader.ReadDataInner][6607]
48090A [Controls.pas][Controls][Controls.TWinControl.SetParent][9787]
Блок в настоящее время используется для объекта класса: AnsiString
Выделенный номер стал: 590207[/more]
Никто не встречался с решением?
добавлено: посоветовали сделать ребилд проекта - сделал. Пока ошибок больше не было. Посмотрю, отпишусь.