Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Splashscreen *schnell* anzeigen (https://www.delphipraxis.net/149658-splashscreen-%2Aschnell%2A-anzeigen.html)

uligerhardt 26. Mär 2010 14:38


Splashscreen *schnell* anzeigen
 
Hallo zusammen!

Wir haben unserer Anwendung letzthin einen Splashcreen spendiert. Wenn man sie jetzt lokal startet, kommt selbiger sofort hoch und die Anwendung initialisiert sich, während der Benutzer abgelenkt ist. :mrgreen:

Nun wollen unsere Anwender des Exe gern auf einem Netzlaufwerk liegen haben, obwohl es mittlerweile gute 10MB hat. Und dann dauert es nach dem Doppelklick aufs App-Icon leider einige Sekunden, bevor der Splashscreen zu sehen ist - vermutlich weil Windows erst mal die komplette Anwendung über's Netz laden willen, bevor es mit der Ausführung anfängt.

Habt ihr Ideen, wie ich den Splashscreen schneller auf den Schirm kriege? Ein kleines Starter-Exe mit dem Splashscreen schreiben, das die "eigentliche" Anwendung als Exe oder DLL lädt? Oder kann man Teile der "großen" Exe irgendwie markieren, dass sie "später" geladen werden können? Zu dem Problem hab ich irgendwie nichts gefunden, obwohl es zum Thema Splashscreen ja viel zu lesen gibt.

Ciao,
Uli.

rollstuhlfahrer 26. Mär 2010 14:45

Re: Splashscreen *schnell* anzeigen
 
ich würde die Lösung mit der Starter-App favorisieren und dann die EXE nachladen oder direkt vom Netz ausführen. Windows lädt die ja dann nach und startet die dann.

Bernhard

Tryer 26. Mär 2010 14:46

Re: Splashscreen *schnell* anzeigen
 
Wirklich sinnvoll ist so ein Splashscreen ja nicht, immerhin vergrößert er nur das Volumen der zu ladenden Daten.. Geschmacksache.
Die "Starter - Exe" ist der richtige Ansatz, es stellt sich aber die Frage ob nicht sowieso Teilfunktionen in Dll´s ausgelagert werden können die dann erst bei Bedarf dynamisch nachgeladen werden. Dann ständen die nötigen Grundfunktionen viel schneller zur Verfügung.

Grüsse, Dirk

Dezipaitor 26. Mär 2010 15:26

Re: Splashscreen *schnell* anzeigen
 
Genau, eine kleine StarterEXE, die CreateProcess aufruft und mit WaitForInputIdle() solange wartet (und den Splash) anzeigt, bis die Anwendung gestartet ist.

Deep-Sea 26. Mär 2010 15:32

Re: Splashscreen *schnell* anzeigen
 
Zitat:

Zitat von Tryer
Wirklich sinnvoll ist so ein Splashscreen ja nicht [...]

Aber eine Anwendung zu starten, die eben nun mal länger braucht, und es passiert einfach gar nichts, ist für den Benutzer auch ein wenig verwirrend. Hat er nicht richtig geklickt? Ist die Anwendung abgestürzt? :-D


Zitat:

Zitat von uligerhardt
Oder kann man Teile der "großen" Exe irgendwie markieren, dass sie "später" geladen werden können?

Jain - jedenfalls nicht so einfach wie es sich bei deiner Frage anhört. Bei Anwendungen die man häufig startet und beendet machen solche Optimierungen sicher Sinn, sollte die Anwendung aber dauernd laufen und so nur einmal pro Windows-Sitzung gestartet werden, ist eine etwas längere Ladezeit wohl zu verschmerzen. Meine Meinung 8-)

uligerhardt 26. Mär 2010 15:34

Re: Splashscreen *schnell* anzeigen
 
Das ging ja schnell. :-)

Danke erstmal für die Antworten. Sieht so aus, als wäre die Starter-Exe der Weg. Wenn ich so drüber nachdenke, könnte man da auch gleich einen Update-Check mit einbauen, der eine lokale Kopie der großen Exe mit einem Original im Netz abgleicht. Dann hätte man vielleicht das Beste aus beiden Welten - einfache Installation: eine Exe an zentrale Stelle kopieren - und "lokale Geschwindigkeit". Hmmm, schon wieder eine Baustelle mehr...

turboPASCAL 26. Mär 2010 15:35

Re: Splashscreen *schnell* anzeigen
 
Zitat:

Genau, eine kleine StarterEXE
Am besten noch als nonVcl um die Daten.- bzw. Dateigrösse noch zu minimieren. ;)

uligerhardt 26. Mär 2010 15:41

Re: Splashscreen *schnell* anzeigen
 
Zitat:

Zitat von Deep-Sea
Zitat:

Zitat von Tryer
Wirklich sinnvoll ist so ein Splashscreen ja nicht [...]

Aber eine Anwendung zu starten, die eben nun mal länger braucht, und es passiert einfach gar nichts, ist für den Benutzer auch ein wenig verwirrend. Hat er nicht richtig geklickt? Ist die Anwendung abgestürzt? :-D

Genau. :!: :-D

Zitat:

Zitat von Deep-Sea
Zitat:

Zitat von uligerhardt
Oder kann man Teile der "großen" Exe irgendwie markieren, dass sie "später" geladen werden können?

Jain - jedenfalls nicht so einfach wie es sich bei deiner Frage anhört.

Meinst du jetzt zerlegen in DLLs/Packages (wie es Tryer schon angesprochen hat)? Das ist eine Idee, die wir ganz unabhängig von Ladegeschwindigkeit etc. immer mal wieder rumwälzen. Das hat aber halt so seine Tücken.

Zitat:

Zitat von Deep-Sea
Bei Anwendungen die man häufig startet und beendet machen solche Optimierungen sicher Sinn, sollte die Anwendung aber dauernd laufen und so nur einmal pro Windows-Sitzung gestartet werden, ist eine etwas längere Ladezeit wohl zu verschmerzen. Meine Meinung 8-)

Ja, aber wie du selbst schriebst:
  • Benutzer klickt doppelt.
  • Nix passiert.
  • User klickt nochmal doppelt.
  • Chaos.

Tryer 26. Mär 2010 15:55

Re: Splashscreen *schnell* anzeigen
 
Ich würde den Splashscreen halt weglassen, die Starter-Exe mit "OneInstance" versehen um den Mehrfachstart zu vermeiden und Cursor auf cr_hourglass setzen.
Mich persöhnlich nerven die Splashscreens wie z.B. bei Gimp, wo ich dann 2 Minuten zuschauen kann das 10.000 Schriften und Effekte geladen werden die ich für das was ich vor habe gerade nicht brauche :wink:

Grüsse, Dirk

Uwe Raabe 26. Mär 2010 16:11

Re: Splashscreen *schnell* anzeigen
 
Also 10MB übers LAN sind bei heute gängigen Übertragungsraten (100-1000 MBit/s) eigentlich kein Problem (zumindest keines von einigen Sekunden), schließlich cached der Server ja auch. Eventuell funkt dir ja auch nur der Virenscanner dazwischen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 Uhr.
Seite 1 von 2  1 2      

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