Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bild aus SQLte laden (https://www.delphipraxis.net/204170-bild-aus-sqlte-laden.html)

Schuby 1. Mai 2020 14:49

Datenbank: SQLite • Version: ? • Zugriff über: FireDac

Bild aus SQLte laden
 
Hallo, ich habe eine kleine Anwendung Programmiert
wo ich eine SQLite Datenbank erstellt habe.

In dieser Datenbank kann ich max 3 Bilder (jpg) mit max 250kb
speichern, mehr als 250 kb lasse ich nicht zu.

Wenn ich einen Datensatz aufrufe dauert es sehr lange bis die 3 Bilder
anget´zeigt werden, ist das normal ? min 3 sec dauert es.
Hier mal mein Code, jpg wird zum speichern gebraucht

Delphi-Quellcode:
var  jpg : TJPEGImage;
...

      jpg:=TJPEGImage.Create;
      m:=TMemoryStream.Create;
     try
      TBlobField(Datasource2.DataSet.FieldByName('BILD1')).SaveToStream(m);
      m.Position:= 0;
      if m.Size > 0 then
      begin
        jpg.LoadFromStream(m);
        Image1.Picture.Assign(jpg);
      end else
      begin
        Image1.Picture := nil;
      end;
      finally
        FreeAndNil(m);
        FreeAndNil(jpg);
      end;

mfg

Delphi.Narium 1. Mai 2020 14:55

AW: Bild aus SQLte laden
 
Kommentiere bitte mal das
Delphi-Quellcode:
Image1.Picture.Assign(jpg);
aus.

Bleibt es dann langsam, liegt's an der Datenbank. Ändert sich die Laufzeit deutlich nach unten, liegt's an der Anzeige des Bildes.

Je nach Ergebnis kann man dann weiterschauen, an welchem Programmteil was geändert werden muss.

Erfahrungsgemäß frisst die Anzeige von Bildern oft die meiste Rechenzeit.

Schuby 1. Mai 2020 14:57

AW: Bild aus SQLte laden
 
Image1.Picture.Assign(jpg);

ist ein ganz kleines vorschaubild.
aber ok ich mache das mal


mfg

Der schöne Günther 1. Mai 2020 15:00

AW: Bild aus SQLte laden
 
Leider bringt Delphi mittlerweile keinen Profiler mehr mit, aber du kannst doch im Debugger einfach an dieser Stelle im Code anhalten und mit F8 Schritt für Schritt jede Zeile durchgehen. Sollte es hier wirklich etwas geben das derart lange dauert siehst du das direkt.

Delphi.Narium 1. Mai 2020 15:02

AW: Bild aus SQLte laden
 
Stimmz auch wieder und sit vermutlich deutlich effektiver als "meine Auskommentiererei".

Und als Ergebnis die "lahme" Zeile geneu benannt werden ;-)

Schuby 1. Mai 2020 15:03

AW: Bild aus SQLte laden
 
Ich habe mal bei allen 3 Bilder
das raus genommen, //Image1.Picture.Assign(jpg);

Das Programm war sofort da, brauche nicht mehr zu wachten.

Tja ich brauche aber die vorschaubilder


mfg

Delphi.Narium 1. Mai 2020 15:05

AW: Bild aus SQLte laden
 
Wir wissen aber nu schonmal, dass das Problem nicht (wie ursprünglich vermutet) datenbankseitig zu suchen ist.

Schuby 1. Mai 2020 16:25

AW: Bild aus SQLte laden
 
Tja was kann man da machen ? ich brauche die kleinen Vorschaubilder

mfg

Delphi.Narium 1. Mai 2020 16:43

AW: Bild aus SQLte laden
 
Ehrlich gesagt: Bisher keine Ahnung :-(

Schonmal dem Tip von Der schöne Günther gefolgt und per Debugger und Einzelschritt durch die Routine gegangen?

Welche der Zeilen "verbrät" da die meiste Zeit?

Schuby 1. Mai 2020 17:10

AW: Bild aus SQLte laden
 
ich habe das jetzt mal gemacht
mit Taste F8 debug


Hier läuft er super durch
Delphi-Quellcode:
      jpg:=TJPEGImage.Create;
      m:=TMemoryStream.Create;
     try
      TBlobField(Datasource2.DataSet.FieldByName('BILD1')).SaveToStream(m);
      m.Position:= 0;
      if m.Size > 0 then
      begin
        jpg.LoadFromStream(m);
        Image1.Picture.Assign(jpg);
      end else
      begin
        Image1.Picture := nil;
      end;
      finally
        FreeAndNil(m);
        FreeAndNil(jpg);
      end;


Und hier läuft er sich zu tote
Zwischen repeat und until, ich denke beim Form Aufbau
Delphi-Quellcode:
unit Vcl.Forms;


      repeat
        try
          HandleMessage;
        except
          HandleException(Self);
        end;
      until Terminated;


mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz