| Autor |
Beitrag |
Petersen
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 21.10.10 17:26
Hallo
ich hoffe, Ihr könnt mir bei folgendem Problem eine Hilfestellung geben:
angenommen ein umfangreiches Delphi-Programm benötigt extrem lange, bis es am Punkt "Application.Initialize;" angekommen ist - oder anders gesagt: lässt man das Programm in der Entwicklungsumgebung laufen, erscheinen nach Compilieren und Linken im Meldungsfenster hunderte Meldungen der Art "Modul laden: xxxxx" bevor "Application.Initialize;" abgearbeitet wird. Es sind wohl alles DLLs die dort geladen werden, die von den hunderten Komponenten benötigt werden, die das Programm einsetzt.
Meine Frage dazu:
gibt es eine Möglichkeit, ein Splash Screen so zu programmieren, das es vor diesem Vorgang angezeigt wird und wäre es evtl. möglich, die Information welches Modul gerade geladen wird in diesem Splash Screen anzuzeigen?
Danke & Gruß
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 21.10.10 17:44
Geht problemlos ...
Miniblöddemo:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| program Project1;
uses Forms,windows,sysutils, Unit1 in 'Unit1.pas' , Unit2 in 'Unit2.pas' ;
{$R *.res}
begin Form2 := TForm2.Create(Application); Form2.Show; sleep(2000); Application.Initialize; Application.MainFormOnTaskbar := True; Form2.Hide; Application.CreateForm(TForm1, Form1); Application.Run; Form2.Free; end.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation uses unit2; {$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin form2.Show; end;
procedure TForm1.Button2Click(Sender: TObject); begin form2.hide; end;
end. |
Zuletzt bearbeitet von bummi am Do 21.10.10 19:07, insgesamt 1-mal bearbeitet
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Do 21.10.10 17:46
Das Sleep könnte man sich auch sparen, weil es eigentlich nur nochmehr verzögert. Und da du eh schon lange brauchst um das Projekt zu laden, würd sich das nur noch mehr verzögern.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 21.10.10 18:49
machst Du Dich lustig über mich??
Das Sleep ist nur drin um die Funtionalität zu demonstrieren und steht für seine aufwändigen Initalisierungen....
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 21.10.10 19:02
bummi hat folgendes geschrieben : | | und steht für seine aufwändigen Initalisierungen.... |
Das hast du falsch verstanden. Die laufen alle bevor dein Splashscreen überhaupt greift...
Um das zu realisieren muss der Code in den initialization Abschnitt einer Unit und diese muss als erste Unit im Projektquelltext eingebunden werden. Aber auch dann werden vorher schon Initialisierungen laufen. Daran kann man aber nichts ändern.
Der erste Punkt zum Eingreifen ist der initialization Abschnitt der ersten Unit.
Für diesen Beitrag haben gedankt: Petersen
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Do 21.10.10 19:05
bummi hat folgendes geschrieben : | machst Du Dich lustig über mich??
Das Sleep ist nur drin um die Funtionalität zu demonstrieren und steht für seine aufwändigen Initalisierungen.... |
Dann schreibt man das normalerweise als Kommentar dazu oder schreibt nur ein Kommentar. woher soll das irgendwer ahnen was du mit dem Sleep bezweckst.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 21.10.10 19:05
@jaenicke
ok, ich dachte er initalisert im Projektcode, also da wo mein sleep steht.
@elundril
sorry, schien mir zu offensichtlich
|
|
Petersen 
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 22.10.10 10:02
Hallo!
Der Tipp von "jaenicke" hat mich schon einmal eine riesen Schritt weitergebracht; also den "initialization"-Abschnitt einer Unit nutzen und diese als erste in das Projekt einbinden!
Vielen Dank für die schnellen Antworten - super Forum!
Danke & Gruß
|
|