Ich habe mal wieder eine frage zum Blob (mediumblob) aus einer Datenbank. Diesmal möchte ich ihn nicht herunterladen, sondern in einem Stream und von da in ein TImage.
Ich benötige eine Lösung für Jpg und png. Meine Lösung funktioniert leider nicht
Code: Alles auswählen
procedure TStammdaten.LoadDBImg;
var
ms : TMemoryStream;
begin
// Datenbank Abfrage mit Zeos
DBHiddenForm.ZQueryIndividual.SQL.Clear;
DBHiddenForm.ZQueryIndividual.SQL.Text := 'Select logoimg FROM coredata';
DBHiddenForm.ZQueryIndividual.open;
ms:=TMemoryStream.Create; // TMemorystrem erstellen
ms.Position:=0; // Memory Stream beginnt beim Zeichen 0
TBlobField(DBHiddenForm.ZQueryIndividual.FieldByName('logoimg')).SaveToStream(ms); // Datenbank Abfrage in den Stream ms speichern
try
ImgLogo.picture.Graphic.LoadFromStream(ms); // Stream in das TImage laden.
finally
ms.free;
end;
end;
ich bekomme hier einen Access Violation Error. Kann mir jemand auf die Sprünge helfen?
Ich habe herausgefunden das der Fehler in der Zeile:
Code: Alles auswählen
ImgLogo.picture.Graphic.LoadFromStream(ms);
Ich rufe die oben stehende Prozedure in einem Frame über einen selbst erstellten Konstruktor auf.
Code: Alles auswählen
constructor TStammdaten.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
LoadDBImg;
end;