Autor Beitrag
Bernhard138
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 54
Erhaltene Danke: 2


D3Prof, D7PE, TDE
BeitragVerfasst: 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?

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mo 14.09.09 14:04 
user profile iconStoney hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 14.09.09 15:07 
Moin!

user profile iconTimosch hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconStoney hat folgendes geschrieben Zum zitierten Posting springen:
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.
Das kann ich pauschal so nicht stehen lassen. Genau das mache ich hier in meinem Netz auch, aus den gleichen Gründen. (Einschränkung: Stand-Alone-EXE, keine DLLs etc.pp)

user profile iconTimosch hat folgendes geschrieben Zum zitierten Posting springen:
Irritierenderweise schlagen bei Exe-Packern häufig Antivirenprogramme Alarm.
Die Heuristik schlägt idR erst dann zu, wenn Netzwerk-Funktionen in UPX-gepackten Executables enthalten sind. Und auch hier kann man problemlos den AV-Herstellen den FP melden. :nixweiss:

user profile iconGarf hat folgendes geschrieben Zum zitierten Posting springen:
Ein Starter muss sich irgendwann wieder schließen und deshalb prüfen, wann die Anwendung vollständig geladen ist.
Das ist allerdings eher ein Problem. :?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Stoney
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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)
BeitragVerfasst: Mo 14.09.09 15:08 
user profile iconTimosch hat folgendes geschrieben Zum zitierten Posting springen:

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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 15.09.09 06:01 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 15.09.09 08:03 
user profile iconBernhard138 hat folgendes geschrieben Zum zitierten Posting springen:
...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.

user profile iconBernhard138 hat folgendes geschrieben Zum zitierten Posting springen:
+ 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.