Was heißt „schlägt fehl“? Fehlermeldung? Wenn ja, welche?
Ich hab noch mal ein bisschen gegoogelt und Quellcode von einer Methode namens FieldAsBlob gefunden. Ich weiß nicht, ob es sich um die gleiche Methode handelt, um die es bei dir geht, da du nicht verraten hast, zu welcher Klasse/Bibliothek das gehört. Jedenfalls ist es bei der Implementierung, die ich gefunden habe, offenbar – anders als ich dachte – so, dass da keine neue Instanz erzeugt wird sondern eine bereits angelegte zurückgeliefert wird, die von der Besitzer-Klasse automatisch später freigegeben wird. Also darf Free nicht aufgerufen werden.
Delphi-Quellcode:
if tb.FieldAsBlob(tb.FieldIndex['picture']) <> nil then
begin
// ms := TMemoryStream.Create; NEIN! Speicherleck!
ms := tb.FieldAsBlob(tb.FieldIndex['picture']);
ms.Position := 0;
DetailsMediaImage.Picture.LoadFromStream(ms);
end
else
DetailsMediaImage.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'books.jpg');