![]() |
Datenbank: MySQL • Version: 5. • Zugriff über: MyDac
Bilddatei aus dem MySQL Blobdfeld laden geht nicht
Hallo Freunde,
ich versuche gerade aus einem Blobfeld ein Bild zu laden und einem Image anzuzeigen zu lassen. Mein Code:
Delphi-Quellcode:
Ich bekomme aber die Fehlermeldung:
memStream := TMemoryStream.Create;
memStream.LoadFromStream(MyQuery2.FieldByName('fahrzeugbild1').AsBytes); memStream.Position := 0; Image56.Picture.Graphic := Memstream.Memory; Inkompatible Typen: 'string' und 'System.TArray<System.Byte>' Wie kann ich das aus dem Blobfeld anders laden ? Ich hab mir schon viele Beispiele rausgesucht ... aber es funktioniert nicht :( |
AW: Bilddatei aus dem MySQL Blobdfeld laden geht nicht
Zitat:
Ich meine hier im Forum gibt es dazu Beiträge: suche mal Ohne MYSQL, das ist ja überall gleich mit Delphi! |
AW: Bilddatei aus dem MySQL Blobdfeld laden geht nicht
Zitat:
Inkompatible Typen: 'TStream' und 'System.TArray<System.Byte>' |
AW: Bilddatei aus dem MySQL Blobdfeld laden geht nicht
Ich versuche gerade mit diesem Code:
Delphi-Quellcode:
Hier bekomme ich folgenden Fehler:
memStream := TMemoryStream.Create;
Memstream.Memory := datamodule3.MyQuery1.FieldByName('fahrzeugbild1').AsBytes; memStream.Position := 0; Image56.Picture.Graphic.LoadFromStream(Memstream.Memory); E2129 Einer Nur-Lesen Eigenschaft kann kein Wert zugewiesen werden Ich könnte Verrückt werden :( |
AW: Bilddatei aus dem MySQL Blobdfeld laden geht nicht
...warum verwendest Du nicht einfach eine entsprechende DBImage Komponente zur Anzeige. Ich benutze zum Zugriff auf eine MySQL Datenbank zum Anzeigen von Bildern DBAdvPicture von TMS..
|
AW: Bilddatei aus dem MySQL Blobdfeld laden geht nicht
Zitat:
|
AW: Bilddatei aus dem MySQL Blobdfeld laden geht nicht
..stimmt , mit der DelphiDBImage - Komponente kommt auch bei mir ein Fehler...bmp Format ungültig.
Du könntest aber auch die JvDBImage aus den Jedi Komponenten nehmen die funktionieren bei mir auch und sind kostenlos .. |
AW: Bilddatei aus dem MySQL Blobdfeld laden geht nicht
Also dieses Thema ist mehrfach hier und anderswo behandelt worden.
Und das das so nicht funktionieren kann, sieht man schon beim Blick in die Dokumentation (wird aber meistens überbewertet) allerdings auch die Namensgebung
Delphi-Quellcode:
sollte doch alle Glocken läuten lassen, dass das wohl nur mit einem Stream funktioniert.
LoadFromStream
|
AW: Bilddatei aus dem MySQL Blobdfeld laden geht nicht
Delphi-Quellcode:
Diese Methoden funktionieren bei mir mit allen gängigen Datenbanken: Firebird, MySQL, MsSQL, PostGreSQL ... wobei GL.Fehlermeldung eine ClassVar in meiner Tools-Klasse darstellt, was aber für die eigentliche Funktionalität der obigen Methoden keine wichtige Rolle spielt.
// ----- Lädt eine Datei in ein Blob-Feld
Function TDatMod.DateiInBlobFeld(Feld: TField; Datei: String): Boolean; Var S : TStream; FileS : TFileStream; begin Result := False; If Not FileExists(Datei) Then Exit; If Not Feld.IsBlob Then Exit; If Not ((Feld.DataSet.State = dsInsert) Or (Feld.DataSet.State = dsEdit)) Then Exit; S := Feld.DataSet.CreateBlobStream(Feld, bmReadWrite); Try Try FileS := TFileStream.Create(Datei, fmOpenRead); S.CopyFrom(FileS, FileS.Size); Result := True; Except on e:exception Do GL.FehlerMeldung := e.Message; End; Finally FileS.Free; S.Free; End; end; // ----- Speichert den Inhalt eines Blob-Feldes in einer Datei Function TDatMod.BlobFeldInDatei(Feld: TField; Datei: String): Boolean; Var S : TStream; FileS : TFileStream; begin Result := False; If Not Feld.IsBlob Then Exit; If Feld.IsNull Then EXIT; S := Feld.DataSet.CreateBlobStream(Feld, bmRead); FileS := TFileStream.Create(Datei, fmCreate); Try Try FileS.CopyFrom(S, S.Size); Result := FileExists(Datei); Except on e:exception Do Begin GL.FehlerMeldung := e.Message; Result := False; End; End; Finally S.Free; FileS.Free; End; end; // ----- Übergibt den Inhalt eines Streams an ein Blobfeld Function TDatMod.StreamInBlobFeld(Strom: TMemoryStream; Feld: TField): Boolean; Var S : TStream; begin Result := False; If Not Feld.IsBlob Then Exit; If Not ((Feld.DataSet.State = dsInsert) Or (Feld.DataSet.State = dsEdit)) Then Exit; S := Feld.DataSet.CreateBlobStream(Feld, bmReadWrite); Try S.CopyFrom(Strom,Strom.Size); Result := True; Finally S.Free; End; end; // ----- Übergibt den Inhalt eines Blobfelds an Strom Function TDatMod.BlobFeldInStream(Strom: TMemoryStream; Feld: TField): Boolean; Var S : TStream; begin Result := False; If Not Feld.IsBlob Then Exit; If Feld.IsNull Then Exit; Try S := Feld.DataSet.CreateBlobStream(Feld, bmRead); Strom.Clear; Strom.CopyFrom(S,S.Size); Result := True; Finally S.Free; End; end; // ----- Übergibt den Inhalt eines Blobfelds an ein TBitMap Function TDatMod.BlobFeldInImage(Feld: TField; Bild: TBitMap): Boolean; Var S : TStream; JBild : TJpegImage; begin Result := False; If Not Feld.IsBlob Then Exit; If Feld.IsNull Then Exit; JBild := TJPegImage.Create; S := Feld.DataSet.CreateBlobStream(Feld, bmRead); Try JBild.LoadFromStream(S); Bild.Assign(JBild); Result := True; Finally If Not Result Then GL.FehlerMeldung := 'Fehler beim Speichern eines Blobfelds in ein Bitmap'; S.Free; JBild.Free; End; end; // ----- Übergibt den Inhalt eines BitMaps an ein Blobfeld Function TDatMod.ImageInBlobFeld(Feld: TField; Bild: TBitMap): Boolean; Var S : TStream; JBild : TJpegImage; begin Result := False; If Not Feld.IsBlob Then Exit; If Not ((Feld.DataSet.State = dsInsert) Or (Feld.DataSet.State = dsEdit)) Then Exit; JBild := TJPegImage.Create; S := Feld.DataSet.CreateBlobStream(Feld, bmWrite); Try JBild.Assign(Bild); JBild.CompressionQuality := 100; JBild.Compress; JBild.SaveToStream(S); S.Position := 0; Result := True; Finally If Not Result Then GL.FehlerMeldung := 'Fehler beim Speichern eines Bitmap in ein Blobfeld'; S.Free; JBild.Free; End; end; |
AW: Bilddatei aus dem MySQL Blobdfeld laden geht nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz