Autor |
Beitrag |
Bernhard138
Hält's aus hier
Beiträge: 5
|
Verfasst: Mo 14.09.09 07:04
Hallo zusammen,
ich habe ein Programm geschrieben (medizinischer Bereich), das ich meinen Mitarbeitern über ein Netzlaufwerk zur Verfügung stelle. Der Vorteil hierbei ist, das Änderungen/Updates nur an einer Stelle und nicht, wie bei herkömmlicher lokaler Installation, auf allen Rechnern erfolgen müssen. Ein Nachteil ist, das der Programmstart durchaus etwas träge ist und seine Zeit dauert (Hauptprogramm 1100 KB + Nachladen diverser Datenbankfiles zur Laufzeit). Um diese Zeit zu überbrücken würde ich jetzt gerne einen Splash Screen einbauen - in Form eines deutlich kleineren Programms, das ebenfalls auf dem Netzlaufwerk liegt, aber eben deutlich schneller geladen wird. Es soll nichts weiter tun als ein kleines JPG anzeigen und das Hauptprogramm starten. Mit der VCL ist das offenbar nicht zu bewerkstelligen, da hierbei Programme > 300 KB herauskommen.
Das Progrämmchen sollte natürlich so klein wie möglich sein, am besten < 50 KB...
Weiß da jeman Rat?
Vielen Dank
Bernhard
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 14.09.09 07:17
Die Exe selbst ist doch wohl schnell da bei der Größe von etwa einem MiB, das heißt du kannst den SplashScreen doch ganz normal in deinem Programm selbst anzeigen, dann alles laden und dann den SplashScreen wieder ausblenden.
Das Fenster müsstest du für eine kleine Exe per API anzeigen (nonVCL), dann ist die Exe relativ klein. Aber wie gesagt: bei der Größe deines Programms brauchst du eigentlich gar keine zusätzliche Exe. Oder wie langsam ist das Netzwerk? 1 MiB für die Exe selbst sollte doch blitzschnell geladen sein.
|
|
Garf
      
Beiträge: 54
Erhaltene Danke: 2
D3Prof, D7PE, TDE
|
Verfasst: Mo 14.09.09 11:14
Ein Starter muss sich irgendwann wieder schließen und deshalb prüfen, wann die Anwendung vollständig geladen ist.
Ist der Splashscreen bei Dir so langsam?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Program ...;
...
begin frmSplash := TfrmSplash.Create(Application); try frmSplash.Show; frmSplash.Update; Application.Initialize; Application.Title := '...'; Application.CreateForm(TfrmMain, frmMain); finally frmSplash.Free; end; Application.Run; end. |
|
|
Stoney
      
Beiträge: 122
Mac OS X 10.6 "Snow Leopard", Ubuntu Linux 9.04, Mandriva 2010, Win 7, Win Vista, Win XP
Object Pascal (Turbo Delphi, FPC 2.2.4, Lazarus), C++ (Code::Blocks, XCode), Java (Eclipse)
|
Verfasst: Mo 14.09.09 12:38
Du könntest auch probieren deine EXE mit UPX zu komprimieren.
Meine Anwendungen (nonVCL) sind meistens ca. 180 kB (ca. 100 kB ohne XML-Loader) groß und mit UPX komprimiert etwa 90 - 100 kB (ca. 40 - 50 kB ohne XML-Loader).
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Mo 14.09.09 14:04
Stoney hat folgendes geschrieben : | Du könntest auch probieren deine EXE mit UPX zu komprimieren.
Meine Anwendungen (nonVCL) sind meistens ca. 180 kB (ca. 100 kB ohne XML-Loader) groß und mit UPX komprimiert etwa 90 - 100 kB (ca. 40 - 50 kB ohne XML-Loader). |
Davon ist abzuraten. Irritierenderweise schlagen bei Exe-Packern häufig Antivirenprogramme Alarm. Sowas lässt sich dem Nutzer schwer vermitteln.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 14.09.09 15:07
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Stoney
      
Beiträge: 122
Mac OS X 10.6 "Snow Leopard", Ubuntu Linux 9.04, Mandriva 2010, Win 7, Win Vista, Win XP
Object Pascal (Turbo Delphi, FPC 2.2.4, Lazarus), C++ (Code::Blocks, XCode), Java (Eclipse)
|
Verfasst: Mo 14.09.09 15:08
Timosch hat folgendes geschrieben : |
Davon ist abzuraten. Irritierenderweise schlagen bei Exe-Packern häufig Antivirenprogramme Alarm. Sowas lässt sich dem Nutzer schwer vermitteln. |
Ich hatte mit Antiviren-Programmen bisher kaum Probleme.
Nur wenn ich zusätzlich zu UPX noch die von FreePascal mitgelieferte strip.exe bei nonVCL/nonLCL-Anwendungen anwende, erkennt Antivir fälschlicherweise das Programm als Trojaner.
|
|
Bernhard138 
Hält's aus hier
Beiträge: 5
|
Verfasst: Di 15.09.09 06:01
jaenicke hat folgendes geschrieben : | Die Exe selbst ist doch wohl schnell da bei der Größe von etwa einem MiB, das heißt du kannst den SplashScreen doch ganz normal in deinem Programm selbst anzeigen, dann alles laden und dann den SplashScreen wieder ausblenden.
Das Fenster müsstest du für eine kleine Exe per API anzeigen (nonVCL), dann ist die Exe relativ klein. Aber wie gesagt: bei der Größe deines Programms brauchst du eigentlich gar keine zusätzliche Exe. Oder wie langsam ist das Netzwerk? 1 MiB für die Exe selbst sollte doch blitzschnell geladen sein. |
Eigentlich sollten 1 MB relativ zügig geladen werden, richtig. Das Netzwerk dürfte auch relativ schnell sein (Uni). Ohne mich mit Netzwerken detailliert auszukennen, würde ich meinen, das vor allem die Zahl der separat zur Laufzeit nachzuladenden Dateien (insgesamt 11, meist wenige KB, einige etwas größer, insgesamt ca. 3 MB) eine Rolle spielt. Scheinbar dauert die Vorbereitung/Initiierung jedes Datentransfers auch so seine Zeit. Beim ersten Start insgesamt locker 30-40 sec. Bei jedem folgenden dann erträgliche 10 sec (Cache!?).
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 15.09.09 06:15
Ja, aber dieses Nachladen solltest du dann einfach erst nach der Anzeige des SplashScreens machen, das meine ich. 
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Di 15.09.09 08:03
Bernhard138 hat folgendes geschrieben : | ...etwas träge ist und seine Zeit dauert (Hauptprogramm 1100 KB |
Kopiere die Anwendung nur dann, wenn die im Netz befindliche neueren Datums als die lokale Version ist.
Bernhard138 hat folgendes geschrieben : | + Nachladen diverser Datenbankfiles zur Laufzeit). |
Wieso lässt du die nicht im Netz oder verfährst so wie oben? Sind es exklusive Daten, die sich selten ändern und von der Anwendung nicht verändert werden?
Ich sehe keinen Grund, diese "Datenbankfiles" jedesmal aus dem Netz zu laden. Wenn du diese Daten immer mal wieder aktualisierst, denke mal über einen kleinen DB-Server nach, auf dem du die Daten zentral ablegst (MSSQL, Firebird usw)
_________________ Na denn, dann. Bis dann, denn.
|
|
|