AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Unendlicher Progressbar"

Ein Thema von skoschke · begonnen am 8. Jul 2020 · letzter Beitrag vom 27. Jul 2020
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#41

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 12:31
Danke für den Tip, leider ändert das nichts an der Ladezeit...

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#42

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 12:34
Wie lange ist denn die Ladezeit (bzw. die Hänge-Dauer des Formulars)?
- für ein Dokument?
- für alle n Dokumente?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#43

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 14:08
Beim ersten Panel / Dokument ca. 3 sec, alle weiteren gehen schneller (ca. 1 sec)

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#44

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 14:15
Kannst du mal den Code zeigen, der das Erzeugen der Komponenten und das Laden ausführt?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#45

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 14:30
Beim ersten Panel / Dokument ca. 3 sec, alle weiteren gehen schneller (ca. 1 sec)

Ciao
Stefan
Steuerst Du jedes erzeugen/laden selbst?

Dann würde ich wieder bei einem Label oder Panel landen...

Angenommen Du lädst 10 Komponenten, dann

Label.Caption := '1/10';
Label.Update;
Dokument1Laden;
Label.Caption := '2/10';
Label.Update;
Dokument2Laden;
...
Label.Caption := '10/10';
Label.Update;
Dokument10Laden;

Label.Visible := False;

Dann würde der Nutzer ja ausreichend sehen, dass sich etwas tut.

Alles andere wäre deutlich aufwendiger und würde nicht mehr bringen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#46

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 17:03
Statt Update ein Label.Repaint oder eventuell Label.Parent.Repaint benutzen
oder eventuell ein TStaticText statt TLabel versuchen.

TLabel hat keinen eigenen Canvas und lässt sich von seinem Parent zeichnen.

Und Update zeichnet nur das neu, als vorher als "veraltet" gekennzeichnet wurde.
Ein Repaint macht dagegen Invalidate + Update.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
557 Beiträge
 
Delphi 12 Athens
 
#47

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 19:01
Vielleicht eine andere Lösung: In meiner App läuft eh im Hauptthread ein Timer mit...
Ich finde diesen Vorschlag eigentlich sehr gut. Man könnte doch einfach eine globale Stringvariable nehmen, deren Inhalt auf der Form angezeigt und die vom Timer jede Sekunde oder so aktualisiert wird. In die Strecke der Komponentenerzeugung fügt man in diese Variable immer wieder Informationen über den gegenwärtigen Stand ein. Man kann über den Timer zusätzlich die Anzahl der verstrichenen Sekunden einfügen, so dass sich die Anzeige ändert, auch wenn die nächste Information noch nicht erreicht ist. So sieht der Anwender, dass die Anwendung nicht hängt. Das erscheint mir doch einfach und effektiv.

Geändert von Benmik (10. Jul 2020 um 19:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#48

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 19:07
Der Timer feuert aber nicht, solange der Mainthread beschäftigt ist.
(Kannst Du mit Sleep oder einer länger laufenden Schleife testen.)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#49

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 19:10
und den Zugriff auf diese Variablen müsste man dennoch synchronisieren, z.B.
* CriticalSection
* oder bei Integer, LongBool und Dergleichen kann auch Atomar gearbeitet werden

MSDN-Library durchsuchenInterlockedExchange, InterlockedCompareExchange, InterlockedOr, InterlockedAnd, InterlockedAdd, InterlockedIncrement
bzw. Delphi-Referenz durchsuchenAtomicExchange, AtomicCmpExchange, AtomicIncrement, ...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
557 Beiträge
 
Delphi 12 Athens
 
#50

AW: "Unendlicher Progressbar"

  Alt 10. Jul 2020, 19:14
Na gut. Ich mache das bei meiner Bilderladerei so, dass ich in den Schleifen bei jedem Durchgang eine Prozedur aufrufe, die prüft, ob entweder eine bestimmte Anzahl von Bildern geladen oder ob eine Sekunde verstrichen ist (über GetTickCount). Diese Prüfung scheint kaum Zeit zu verbrauchen. Das müsste das Problem doch endlich killen.
und den Zugriff auf diese Variablen müsste man dennoch synchronisieren...
Wieso denn, es gibt doch kein Multithreading. Und wenn doch, ich lade die Bilder ja auch parallel, das funktioniert trotzdem.

Geändert von Benmik (10. Jul 2020 um 19:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 06:22 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