AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Blob Fehler: Blob nicht geöffnet
Thema durchsuchen
Ansicht
Themen-Optionen

Blob Fehler: Blob nicht geöffnet

Ein Thema von Benutzername · begonnen am 18. Apr 2004 · letzter Beitrag vom 19. Jul 2006
 
Benutzername

Registriert seit: 18. Apr 2004
7 Beiträge
 
#1

Blob Fehler: Blob nicht geöffnet

  Alt 18. Apr 2004, 12:04
hallo ihrs

ich habe in meiner paradox DB unter anderem bilder (jpegs) in blob feldern abgespeichert.

speichern funktioniert wunderbar. wenn ich mir die bilder aber nach dem speicher anzeigen lassen möchte bekomme ich immer den Fehler "Blob nicht geöffnet"

wenn ich die DB schließe (alle Tables auf Active = false) und dann wieder öffne (alle Tables Active = true) werden die bilder normal und ohne Fehler angezeigt. füge ich wieder ein bild hinzu bekomme ich wieder den fehler.

hier mal die komplette funktion die die bilder schreibt

Delphi-Quellcode:
function TDB.AddVolume(const Serial: string; const VolumeType: Integer;
  const Title, Description, Tags: string; Picture: string;
  const IsPrivate: Boolean): Boolean;
var
  blob: TStream;
  Jpeg: TJpegImage;
begin
  Result:= true;
  try
    Jpeg:= TJpegImage.Create;
    try
      with FTableVolume do begin
        Append;
        FieldByName('Serial').AsString:= Serial;
        FieldByName('Type').AsInteger:= VolumeType;
        FieldByName('Title').AsString:= Title;
        FieldByName('Description').AsString:= Description;
        FieldByName('Tags').AsString:= Tags;
        FieldByName('Private').AsBoolean:= IsPrivate;
        blob:= CreateBlobStream(TBlobField(FieldByName('Picture')), bmWrite);
        if Length(Picture) > 0 then begin
          Jpeg.LoadFromFile(Picture);
          ResizeJpeg(Jpeg);
        end;
        Jpeg.SaveToStream(blob);
        Post;
      end;
    except
      Result:= false;
    end;
  finally
    FreeAndNil(blob);
    FreeAndNil(Jpeg);
  end;
end;
die anzeige procedure ist aus platz und übersichts günden nicht komplett. das wesendliche ist aber zu sehn

Delphi-Quellcode:
procedure THtml.GeneratePage(Params: TStringList; const Save: Boolean);
var
  Page: string;
  Mode: string;
  ID: string;
  cnt: Integer;
  Jpeg: TJpegImage;
  blob: TStream;
begin
  FHtmlPage.New;
  Page:= Params.Values['Page'];
  Mode:= Params.Values['Mode'];
  ID:= Params.Values['ID'];

  Jpeg:= TJpegImage.Create;
  try
    if Page = 'Volumethen begin
      GenerateListPage;
      with FHtmlPage do begin
        if (Mode = 'Show') and (Params.Values['Type'] <> '') and (ID = '') then
        begin
          ClearTmp;
          AddLine(1, '<div id="Text" align="center">Pfad:');
          AddLine(2, '[url="Browse.html?Page=Volume&Mode=Show&Cancel=false"]Datenträger[/url]/' + FDB.VolumeTypeToStr(TVolumeType(StrToInt(Params.Values['Type']))));
          AddLine(1, '</div>');
          AddLine(1, '<table border="0" width="100%">');
          FDB.TableVolume.IndexName:= 'Type';
          FDB.TableVolume.SetKey;
          FDB.TableVolume.FieldByName('Type').AsInteger:= StrToInt(Params.Values['Type']);
          if FDB.TableVolume.GotoKey then begin
            FDB.TableVolume.IndexName:= 'Title';
            FDB.TableVolume.First;
            while not FDB.TableVolume.EOF do begin
              blob:= FDB.TableVolume.CreateBlobStream(TBlobField(FDB.TableVolume.FieldByName('Picture')), bmRead);
              ID:= FDB.TableVolume.FieldByName('ID').AsString;
              AddLine(2, '<tr>');
              AddLine(3, '<td colspan="4"><div align="center">[img]Images/LineHSmall.jpg[/img]</div></td>');
              AddLine(2, '</tr>');
              AddLine(2, '<tr>');
 
              // ----------------------------------
              Jpeg.LoadFromStream(blob); // <-------------------------- hier wird der Fehler angezeigt
             // -----------------------------------

              FreeAndNil(blob);
              if (Jpeg.Height = 0) and (Jpeg.Width = 0) then begin
                AddLine(3, '<td>[img]Images/NoPicture.jpg[/img]</td>');
              end else begin
                Jpeg.SaveToFile(FApp.AppInfo.Dir + '\Images\Tmp\Volume' + ID + '.jpg');
                FTmpFiles.Add('Volume' + ID + '.jpg');
                AddLine(3, '<td>[img]Images/Tmp/Volume' + ID + '.jpg[/img]</td>');
              end;
              AddLine(3, '<td width="40%">');
              AddLine(4, '<div id="MainText">[url="Browse.html?Page=Volume&Mode=Show&Type=' + Params.Values['Type'] + '&ID=' + ID + '&Cancel=false"]' + FDB.TableVolume.FieldByName('Title').AsString + '[/url]</div>');
              if FDB.TableVolume.FieldByName('Private').AsBoolean then begin
                AddLine(4, '<div id="Text">Privat</div>');
              end else begin
                AddLine(4, '<div id="Text">Öffentlich</div>')
              end;
              AddLine(3, '</td>');
              AddLine(3, '<td width="50%"><div id="Text">' + FDB.TableVolume.FieldByName('Description').AsString + '</div></td>');
              AddLine(3, '<td width="10%">');
              AddLine(4, '<div align="right">[url="Browse.html?Page=Volume&Mode=Edit&ID=' + ID + '&Cancel=false"][img]Images/GotoEdit.jpg[/img][/url]');
              AddLine(4, '<div align="right">[url="Browse.html?Page=Volume&Mode=Show&Type=' + Params.Values['Type'] + '&ID=' + ID + '&Action=DeleteVolume&Cancel=false"][img]Images/GotoDelete.jpg[/img][/url]');
              AddLine(3, '</td>');
              AddLine(2, '</tr>');
              FDB.TableVolume.Next;
            end;
          end else begin
            AddLine(2, '<tr>');
            AddLine(3, '<td><div align="center">[img]Images/LineHSmall.jpg[/img]</div></td>');
            AddLine(2, '</tr>');
            AddLine(2, '<tr>');
            AddLine(3, '<td><div id="Text" align="center">Keine Elemente in dieser Ansicht</div></td>');
            AddLine(2, '</tr>');
          end;
          FDB.TableVolume.CancelRange;
          AddLine(1, '</table>');
          ReplaceParam('Bottom', TmpHtml);
        end;
      end;
    end;

    FHtmlPage.CloseParams;
    if Save then FHtmlPage.SaveToFile(FApp.AppInfo.Dir + '\Browse.html');
  finally
    FreeAndNil(Jpeg);
    FreeAndNil(blob);
  end;
end;
der fehler wird auch produziert wenn ich den blob mit assigned prüfe. auch wenn ich die größe (mit size) des blobs prüfe oder mit isNull. sobald ich auf das blob zugreife erscheint die fehlermeldung.

ich hoffe jemand hat eine idee oder schon mal einen änlichen fehler gehabt. ich komme einfach nicht dahinter

danke schon mal im vorraus

mfg Benutzername
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz