Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Überprüfen ob Stream aus BMP leer ist (https://www.delphipraxis.net/173352-ueberpruefen-ob-stream-aus-bmp-leer-ist.html)

bernhard_LA 19. Feb 2013 12:46

Überprüfen ob Stream aus BMP leer ist
 
Ich speichere mit folgender Codesequenz Bilder aus einem TImage in BLOP Felder einer MSSQL Datenbank

Delphi-Quellcode:

  // save the Image data to the Blob Field

  BLobField1 := ADOTable.FieldByName('Image1') as TBlobField;

  BLobField2 := ADOTable.FieldByName('IMage2') as TBlobField;

  // 

  Img1_stream := TMemoryStream.Create;

  img2_stream := TMemoryStream.Create;

  aImage.Picture.Bitmap.SaveToStream(Img1_stream);

  bImage.Picture.Bitmap.SaveToStream(Img2_stream);



   

  SaveBMPToTable(ADOTable, BLobField2, Img2_stream );

  SaveBMPToTable(ADOTable, BLobField1, Img1_stream );

In beiden TImage Komponenten ist ein Bild auf meinem Formular sichtbar.

Leider kann ich nur das eine Bild speichern , der Stream im zweiten Bild scheint leer zu sein.

Da ich den ersten Stream in beide Blop Felder meiner DB schreiben kann schließe ich einen Fehler in der Funktion SaveBMPToTable aus.

Irgendeine Idee für diesen Fehler ?

DeddyH 19. Feb 2013 12:54

AW: Überprüfen ob Stream aus BMP leer ist
 
Sind das auch beides wirklich Bitmaps? Aus der Hilfe zu TPicture.Bitmap:
Zitat:

Bitmap referenziert das Grafikobjekt, sofern es ein Bitmap enthält. Wenn Sie mit Bitmap auf ein TPicture-Objekt verweisen, das eine Metadatei oder ein Symbol enthält, wird keine Grafikkonvertierung durchgeführt sondern der Inhalt des Objekts verworfen und ein neues, leeres Bitmap zurückgegeben.

bernhard_LA 19. Feb 2013 12:59

AW: Überprüfen ob Stream aus BMP leer ist
 
Ok, ich male des fragliche Bild mit canvas.male_etwas.... selbst, habe damit nicht automatische eine BMP ?

DeddyH 19. Feb 2013 13:06

AW: Überprüfen ob Stream aus BMP leer ist
 
Auf den Canvas des TImage? IIRC ist das dann tatsächlich eine Bitmap.

bernhard_LA 19. Feb 2013 13:16

AW: Überprüfen ob Stream aus BMP leer ist
 
in besagtes Image2 kopieren das Ergebnis unserer malaktion mit folgender Codezeile :


Delphi-Quellcode:
 
                Image2.Picture.BitMap.Assign(MyClass.MyImage);

MyClass.MyImage ist vom Datentyp TBitmap. Das Bild wird richtig angezeigt.

DeddyH 19. Feb 2013 13:24

AW: Überprüfen ob Stream aus BMP leer ist
 
Du hast also eine Klasse, die eine Bitmap enthält, malst auf dieser herum, kopierst sie anschließend in das TImage und willst dann dessen Bitmap in der DB ablegen, richtig? Eigentlich müsste das funktionieren.

bernhard_LA 19. Feb 2013 13:28

AW: Überprüfen ob Stream aus BMP leer ist
 
Danke, dein Statement ist komplett richtig, nur will sich der Fehler leider nicht zeigen :evil:

DeddyH 19. Feb 2013 13:34

AW: Überprüfen ob Stream aus BMP leer ist
 
Hast Du Dir einmal die Größe der Streams ausgeben lassen? Wenn der zweite tatsächlich leer ist, muss Stream.Size ja 0 sein.

bernhard_LA 20. Feb 2013 10:15

AW: Überprüfen ob Stream aus BMP leer ist
 
Analysergebnis:

stream.size ist definitiv ungleich NULL, kann es sein irgendwo wird mein Stream nicht als BItmap interpretiert ?

DeddyH 20. Feb 2013 10:20

AW: Überprüfen ob Stream aus BMP leer ist
 
Aber wo sollte das interpretiert werden? TMemoryStream und TBLOBField hantieren ja IIRC mit Rohdaten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz