I have read here http://delphi.about.com/od/adptips2005/qt/cleartimage.htm that a way to clear an image from a TImage is to assign nil to .Picture, like this:
Image1.Picture := nil;
I just want to be sure... I guess the Image1.Picture.loadFromFile(fileName) will allocate some memory and simply setting it to nil, without freeing the memory, will lead to a memory leak.
Am I correct? If this is so, which is the "proper" way to unload and clear an image from a TImage?
The TImage.Picture setter is TImage.SetPicture() in the ExtCtrls unit, which calls TPicture.Assign() in the Graphics unit, which calls TPicture.SetGraphic(), which will free an existing Graphic before assigning a new Graphic.
So the usage of
Image1.Picture := nil;
Will ultimately call
Image1.Picture.SetGraphic(nil);
And will not cause any memory leak.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With