在valedit.pas中,TValueListStrings類沒有實現虛擬的Destroy方法,
它實現了虛擬的Clear方法, 但是它的父類TStringList的
Destroy中並不通過調用Clear()來釋放資源,因此TValueListStrings
中為成員ItemProps分配的內存就丟失了.
所以如果在Form中添加了TValueListEditor控件,並且在代碼中
使用了其ItemProperty成員(因為它是延遲分配,只有第一次使用時才分配內存),
則需要在Form.Destroy()方法中顯式的調用Clear()方法,如下:
MyForm.Destroy()
{
...
MyValueListEditor->Strings->Clear();
...
}
這是在C++ Builder 6的VCL Source中發現的, 估計 Delphi 6中
也應該有這個Bug.