// ----- 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;