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');
Sag ma wieso wird da Speicherleck erzeugt?
Ich will es mal mit einem Beispiel aus der Realität veranschaulichen:
Code:
Ich leihe mir ein Auto vom Autoverleiher
Mit dem Auto vom Chef mache ich meine Besorgungen
Wenn du das jetzt öfters machst, dann hast du den Hof voller gemieteter Wagen stehen und musst dir auch noch die Frage gefallen lassen, warum du die überhaupt angemietet hast.
Ok, versuchen wir es mal anders
Code:
Ich leihe mir ein Auto vom Autoverleiher
Mit dem Auto vom Chef mache ich meine Besorgungen
Dieses Auto gebe ich bei dem Autoverleiher wieder ab
MÖÖÖÖP - Der Verleiher schaut mich ungläubig an und der Chef ist kurz vor der Kernschmelze, es ist sein Auto
Also
- entweder ich leihe mir das Auto vom Verleiher, benutze es und gebe auch dieses geliehene Auto wieder ab
- oder ich nehme das Auto vom Chef (weil es da ist und keine Leihgebühren kostet)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)