AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bild aus SQLte laden

Bild aus SQLte laden

Ein Thema von Schuby · begonnen am 1. Mai 2020 · letzter Beitrag vom 1. Mai 2020
Antwort Antwort
Schuby

Registriert seit: 25. Dez 2018
49 Beiträge
 
#1

Bild aus SQLte laden

  Alt 1. Mai 2020, 14:49
Datenbank: SQLite • Version: ? • Zugriff über: FireDac
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
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.239 Beiträge
 
Delphi 7 Professional
 
#2

AW: Bild aus SQLte laden

  Alt 1. Mai 2020, 14:55
Kommentiere bitte mal das 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.
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
49 Beiträge
 
#3

AW: Bild aus SQLte laden

  Alt 1. Mai 2020, 14:57
Image1.Picture.Assign(jpg);

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


mfg
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.226 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Bild aus SQLte laden

  Alt 1. Mai 2020, 15:00
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.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.239 Beiträge
 
Delphi 7 Professional
 
#5

AW: Bild aus SQLte laden

  Alt 1. Mai 2020, 15:02
Stimmz auch wieder und sit vermutlich deutlich effektiver als "meine Auskommentiererei".

Und als Ergebnis die "lahme" Zeile geneu benannt werden
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
49 Beiträge
 
#6

AW: Bild aus SQLte laden

  Alt 1. Mai 2020, 15:03
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
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.239 Beiträge
 
Delphi 7 Professional
 
#7

AW: Bild aus SQLte laden

  Alt 1. Mai 2020, 15:05
Wir wissen aber nu schonmal, dass das Problem nicht (wie ursprünglich vermutet) datenbankseitig zu suchen ist.
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
49 Beiträge
 
#8

AW: Bild aus SQLte laden

  Alt 1. Mai 2020, 16:25
Tja was kann man da machen ? ich brauche die kleinen Vorschaubilder

mfg
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.239 Beiträge
 
Delphi 7 Professional
 
#9

AW: Bild aus SQLte laden

  Alt 1. Mai 2020, 16:43
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?
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
49 Beiträge
 
#10

AW: Bild aus SQLte laden

  Alt 1. Mai 2020, 17:10
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf