Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi BlobStream mit dBase & jpeg (https://www.delphipraxis.net/121689-blobstream-mit-dbase-jpeg.html)

Noch Fragen 2. Okt 2008 14:42

Datenbank: dBase • Zugriff über: SQL

BlobStream mit dBase & jpeg
 
Hallo zusammen,
ich arbeite mit Delphi 4 und versuche, ein jpeg-file in ein Blob-Feld zu speichern. DB ist dBase.
Im DBT-file ist der Platz in der richtigen Größe belegt, aber es ist anscheinend nur Datenmüll. Der Code unten ist so umständlich, weil ich versucht habe, mich Schritt für Schritt einer Fehlerquelle zu nähern. Wer hat hier eine Lösung bzw. (was ich vermute) kann bestätigen, dass es ein Delphi-Fehler ist. Wenn letzteres: in welcher Version arbeitet Blob mit dBase korrekt zusammen? Vielen Dank vorab für die Unterstützung

Martin Jäger


var
JPegImage : TJpegImage;
MyBlobStream : TBlobStream;
MyJPegStream : TMemoryStream;

rQuery.Edit;

JPegImage := TJpegImage.Create;
MyJPegStream := TMemoryStream.Create;

JPegImage.LoadFromFile('Beispiel.jpg');
JPegImage.SaveToStream(MyJPegStream);

MyBlobStream := TBlobStream.Create(TBlobField(DB.FieldByName('M_ST REAM')), bmReadWrite);
MyBlobStream.CopyFrom(MyJPegStream,0);

Image1.Picture.Assign(JPegImage); // Bild wird fehlerfrei angezeigt

rQuery.Post;

MyJPegStream.Free;
MyBlobStream.Free;

Reinhardtinho 2. Okt 2008 14:53

Re: BlobStream mit dBase & jpeg
 
Wenn du Bilder als Blob in einer Datenbank speicherst, sieht das aus wie Datenmüll, da steht nichts lesbares drin. Hast du schon versucht, wieder ein Bild aus dem gespeicherten Blob zu erzeugen?

nahpets 2. Okt 2008 15:16

Re: BlobStream mit dBase & jpeg
 
Hallo,

schau mal hier: http://wall.riscom.net/books/delphi/del_tis/TI2807.html
oder hier: http://groups.google.de/group/borlan...b3b6c0bd4c3756

Meine mich schwach daran erinnern zu können, dass ich vor Jahr und Tag mal mit Blobs und dBase Probleme hatte, die sich durch Änderungen an der BDE-Konfiguration beheben ließen. Was ich seinerzeit geändert habe, weiß ich nicht mehr. Auf die Schnelle hab' ich per google... nichts dazu finden können.

DeddyH 2. Okt 2008 15:35

Re: BlobStream mit dBase & jpeg
 
Musste man da nicht an BlobSize rumspielen? Ich weiß es aber auch nicht mehr genau.

nahpets 2. Okt 2008 15:48

Re: BlobStream mit dBase & jpeg
 
Hallo,
Zitat:

Zitat von DeddyH
Musste man da nicht an BlobSize rumspielen? Ich weiß es aber auch nicht mehr genau.

jo,

der zweite Eintrag von diesem da http://forums.frontrange.com/viewtopic.php?p=1042 sollte helfen.

sx2008 2. Okt 2008 20:44

Re: BlobStream mit dBase & jpeg
 
Bei dBase sind Blobs wenig empfehlenswert. Während DBT-Dateien noch rel. gut dokumentiert sind, gibt es über DBT-Dateien wenig Infos.
Das hat zur Folge, dass nicht jeder DB-Treiber (sei es unter MSDOS oder Windows) MEMO-Felder gut unterstützen.
Ältere dBase-Versionen neigen dazu, die DBT-Datei ständig auszublähen, da immer nur am Ende angefügt wird.
(gelöschte Daten werden nicht automatisch bereinigt)
Es besteht die Gefahr, viele Bilder auf einen Schlag zu verlieren.
Da reicht schon ein Stromausfall und alle Blobdaten sind verstrubelt.

Gerade bei Jpeg oder Gif-Dateien ist es sinnvoller, die Dateien ausserhalb der Datenbank im Dateisystem zu speichern.
Das hat den Vorteil, dass man die Bilder doppelt nützen kann: einerseits als Suche über die Datenbank, andererseits kann man einen Webserver aufsetzen und bekommt so einen 2. Zugang zu den Bildern.
In der Tabelle speichert man nur den Dateinamen ohne Pfad.

DBase hat auch die Eigenheit, Datenmüll in den Dateien anzusammeln.
Datenblöcke in DBT-Dateien werden auf 512 Bytes aufgerundet. Sind die Nutzdaten nicht ein Vielfaches von 512 Bytes, hängt am Ende "Müll" bzw. es sind die Daten, die vorher an dieser Stelle auf der Platte waren.
Das ist ein Sicherheitsrisiko, denn die DBT-Datei enthält dann Fragmente von gelöschten Dateien (Passwort, Konto-nr, Ausschnitte aus Liebesbriefen, ...).


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.

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