// { Tabelle für Bilder }
{ Tabellenname } TableName: '
table_thumbnail';
{ SQL Tabelle für die Bilder }
SQL: '
CREATE TABLE table_thumbnail(id AUTOINC NOT NULL MINVALUE 0,' +
'
thumbnail_picture GRAPHIC BLOBBlockSize 102400 BLOBCompressionAlgorithm BZIP BLOBCompressionMode 9 NOT NULL,' +
'
thumbnail_sha512 VARCHAR(255))';
// MyABSTable ist ein Record
var
FileStream: TFileStream;
BlobStream: TStream;
Dummy_String_SHA512:
String;
Dummy_Bool_SHA512: Boolean;
begin
{ :: Bild hinzufügen / bearbeiten - }
if OpenPictureDialog1.Execute
then
begin
try
FileStream := TFileStream.Create(OpenPictureDialog1.FileName, fmOpenRead
or fmShareDenyNone);
Dummy_String_SHA512 := GetStreamToHashSHA256Hex(FileStream);
Dummy_Bool_SHA512 := MyABSTable.atable_construct[4].Table.Locate(MyABSTable.atable_construct[4].FieldNames[2], Dummy_String_SHA512, []);
case Dummy_Bool_SHA512
of
True:
{ benötige ich nicht, ist nur für meine Lesbarkeit }
;
False:
begin
MyABSTable.atable_construct[4].Table.Insert;
BlobStream := MyABSTable.atable_construct[4].Table.CreateBlobStream(MyABSTable.atable_construct[4].Table.FieldByName(MyABSTable.atable_construct[4].FieldNames[1]), bmWrite);
BlobStream.Seek(0, soFromBeginning);
BlobStream.CopyFrom(FileStream, FileStream.Size);
// mit ,0); wird es auch nicht besser
MyABSTable.atable_construct[4].Table.FieldByName(MyABSTable.atable_construct[4].FieldNames[2]).AsString := Dummy_String_SHA512;
MyABSTable.atable_construct[4].Table.Post;
// HIER knallt immer eine Exception rein, mit der Meldung: Feld 'xyz' muss einen Wert haben
// Feld 'xyz' ist definitiv mein Blob Field
end;
end;
if assigned(FileStream)
then
FileStream.Free;
if assigned(BlobStream)
then
BlobStream.Free;
MyABSTable.atable_construct[0].Table.Edit;
MyABSTable.atable_construct[0].Table.FieldByName(MyABSTable.atable_construct[0].FieldNames[13]).AsInteger := MyABSTable.atable_construct[4].Table.RecNo;
MyABSTable.atable_construct[0].Table.Post;
ABSTable1AfterScroll(MyABSTable.atable_construct[0].Table);
except
MyABSTable.atable_construct[4].Table.Cancel;
MyABSTable.atable_construct[0].Table.Cancel;
end;
end;
{ - Bild hinzufügen / bearbeiten :: }