Announcement

Collapse
No announcement yet.

OLE-Objekte

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • OLE-Objekte

    halloooo <br>
    ich habe ein kleines problem.<br>
    ich habe eine access tabelle in der sind fotos als OLE-objekte eingebettet (direkt in der datenbank ... nicht extern ausgelagert). alle fotos sind MS Photo Editor 3.0 Photo objekte. ich möchte die bilder aber auf die platte speichern. es sind über 500 bilder. gibt es ein tool womit ich diese ole-objekte als bilder auf die platte speichern kann?<br>
    als info ... nutze win2K und access 2K<br>
    mfg
    jan

  • #2
    Hallo,

    in diesem Fall bleibt nichts anderes übrig, als beim Auslesen der Daten den OLE-Header zu "überspringen". Das könnte zum Beispiel so aussehen (ich zeige die Grafik nur an - aber Dank der TBitmap-Methode <b>SaveToFile</b> sollte das Abspeichern als Datei kein Problem sein):
    <pre>
    var
    aBitmap : TBitmap;
    aBS : TADOBlobStream;
    begin
    if not (ADODataSet1.State in [dsBrowse]) then
    Exit;
    aBS := TADOBlobStream.Create(ADODataSet1Photo, bmRead);
    try
    aBS.Seek(78, soFromBeginning);
    aBitmap := TBitmap.Create;
    try
    aBitmap.LoadFromStream(aBS);
    DBImage1.Picture.Graphic := aBitmap;
    finally
    aBitmap.Free;
    end
    finally
    aBS.Free;
    end;
    end;
    </pre>
    In meinem Beispiel werden die ersten 78 Byte übersprungen - ob das für alle ACCESS-Versionen gilt, kann ich aber nicht sagen

    Comment


    • #3
      hallo!<br>
      erstmal danke für die antwort. habe den quelltext schon in einen anderen thread von dir gefunden. habe ihn auch schon ausprobiert. das problem ist, wenn ich den stream abspeicher (mit dem überspringen) ist das bitmap 359 Kbyte groß. die datei dürfte aber nur 103 KByte groß sein. in der 359 kb file ist auch kein bitmap header zu finden. ich habe daher mal ein "richtiges" bitmap in die tabelle eingefügt und dann den stream abgespeichert. dann geht es und ich habe mein bitmap, wenn das ole-objekt auch als bitmap eingebettet wurde (wobei man bei access 2000 die ersten 72 byte überspringt!). das problem ist, dass das ole-objekt vom "typ" MS Photo Editor 3.0 Photo ist. ich müsste entweder das ole-objekt umwandeln mit access in ein bitmap ole-objekt oder wissen in welchem format die grafik liegt und an welcher stelle im stream. würde mich freuen wenn da jemanden eine idee einfällt.<br>
      gruss<br>
      ja

      Comment

      Working...
      X