Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: Probleme mit Blobfeldern und Bilder

  Alt 14. Feb 2011, 18:08
Also ich würde mal damit beginnen, die Blobs mit Hilfe von Access (also dem Frontend) zu befüllen.
Unten folgt dann ein Procedure, mit der Du alle Blobs als Dateien auf der Festplatte speichern kannst.
Wenn du die Dateien mit einem Hexeditor anschaust, dann siehst du das Access vor den Bilddaten noch einen Ole-Header einschiebt.
Wenn du aus deinem Programm Bilder speichern möchtest, dann musst du diesen Header natürlich beachten.
Delphi-Quellcode:
// alle Blob-Felder des Datasets als Dateien im aktuellen Verzeichnis speichern
procedure TForm1.SaveBlobs(ds:TDataSet);
var
   i , j : Integer;
   flds_count : Integer;
   flds : array of TBlobField;
   ext : string;
begin
   flds_count := 0;
   for i:=0 to ds.Fields.Count -1 do
   begin
      if ds.Fields[i].IsBlob then
         Inc(flds_count);
   end;

   if flds_count = 0 then
      raise Exception.Create('no Blob fields found');

   SetLength(flds, flds_count);

   j := 0;
   for i:=0 to ds.Fields.Count -1 do
   begin
      if ds.Fields[i].IsBlob then
      begin
         flds[j] := ds.Fields[i] as TBlobField;
         Inc(j);
      end;
   end;

   ds.First;
   while not ds.Eof do
   begin
      ext := '.'+IntToStr(ds.RecNo);
      for i := 0 to flds_count-1 do
      begin
         flds[i].SaveToFile(flds[i].FieldName+ext);
      end;

      ds.Next;
   end;
end;
Andreas
  Mit Zitat antworten Zitat