Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "Sleep"-t das programm wenn man... (https://www.delphipraxis.net/137311-sleep-t-das-programm-wenn-man.html)

DArc 18. Jul 2009 13:50


"Sleep"-t das programm wenn man...
 
meine frage ist, ob das programm freezed, schläft oder was auch immer, wenn man
.res dateien extrahiert?

denn ich habe ein programm gemacht, dass die res datei zb als exe extrahiert
und habe auch ein ladebalken / progressbar gemacht. das problem ist, dass
die progressbar nicht lädt, sondern nur am ende angezeigt wird, da offensichtlich
das programm solange schläft ...

meine frage ist, ob es wirklich "sleep"-t

Delphi-Quellcode:
if (Antwort = 'Ja') then
begin
Label1.Caption := 'Need Help!';
Label2.Caption := 'Nächste Frage wäre dann:';
Label2.Caption := 'Könntet ihr mir helfen?';
end;
(spaß bei seite^^)

himitsu 18. Jul 2009 13:59

Re: "Sleep"-t das programm wenn man...
 
Wenn du dem Programm (z.B. durch Application.ProgressMessages) nicht die Möglichkeit gibst sich zu aktualisieren, kann sich an der Oberfläche auch nichts tun.

Aber was machst du nochmal?
Du holst eine EXE aus den Ressourcen oder wie?
Aber das kann doch nicht sooo lange dauern, das man dafür 'nen Ladebalken braucht :gruebel:

Phoenix 18. Jul 2009 14:01

Re: "Sleep"-t das programm wenn man...
 
Nein, das Programm schläft nicht, sondern arbeitet hart. Nämlich an dem extrahieren der Ressourcen.
Das Programm ist dabei so beschäftigt, dass es die Windows-Messages zum zeichnen der Oberfläche nicht abarbeiten kann.
Also öfter mal ein ProcessMessages rein, und *wuppdi* klappts auch mit dem Zeichnen des Fortschrittbalkens.

Roter Kasten: Da war jemand schneller :mrgreen:

DArc 18. Jul 2009 14:03

Re: "Sleep"-t das programm wenn man...
 
Zitat:

Zitat von himitsu
Wenn du dem Programm (z.B. durch Application.ProgressMessages) nicht die Möglichkeit gibst sich zu aktualisieren, kann sich an der Oberfläche auch nichts tun.

Aber was machst du nochmal?
du holst eine EXE aus den Ressourcen?
aber das kann doch nicht sooo lange dauern, daß man dafür 'nen Ladebalken braucht :gruebel:

ich wusste zuerst eben net, dass es wirklich so schnell geht, aber für größere dateien lohnt sich das natürlich schon ...
(die exe ist ungefähr 100mb - das ist eig. noch ziemlich klein in meinem projekt)

und ja, ich habe Application.ProcessMessage eingebaut ...

ich gebe euch mal den quellcode^^


Delphi-Quellcode:
if (Gewicht = Gewicht div 100 * 100) then
begin
Application.ProcessMessages;
sProgressBar1.Position := 100;
sButton1.Visible := False;
sButton2.Visible := True;
sButton3.Visible := False;
end;

usw. ...

edit: ich versuchs mal mit 1gb^^
bis gleich^^

Satty67 18. Jul 2009 14:10

Re: "Sleep"-t das programm wenn man...
 
Dein Quellcode sieht seltsam aus... erst Nachrichten abarbeiten, dann Komponenten aktualisieren ist falsch herum... und wieso gleich auf 100... eine Schrittweite ist nicht erkennbar.

Die Progressbar ist aber auch meines Wissens nicht von Application.ProgressMessages abhängig (sollte also immer, auch unter Last die Anzeige aktualisieren)

DArc 18. Jul 2009 14:15

Re: "Sleep"-t das programm wenn man...
 
Zitat:

Zitat von Satty67
Dein Quellcode sieht seltsam aus... erst Nachrichten abarbeiten, dann Komponenten aktualisieren ist falsch herum... und wieso gleich auf 100... eine Schrittweite ist nicht erkennbar.

Die Progressbar ist aber auch meines Wissens nicht von Application.ProgressMessages abhängig (sollte also immer, auch unter Last die Anzeige aktualisieren)


das gehört auch zu den letzten zeilen^^

klar ist es "gleich" auf 100
ist ja auch die letzte aktualisierung...

für 1:

Delphi-Quellcode:
if (Gewicht = Gewicht div 100 * 1)then
begin
Application.ProcessMessages;
sProgressBar1.Position := 1;
end;
oder muss ich das umdrehen:


Delphi-Quellcode:
if (Gewicht = Gewicht div 100 * 1)then
begin
sProgressBar1.Position := 1;
Application.ProcessMessages;
end;
???

Phoenix 18. Jul 2009 14:24

Re: "Sleep"-t das programm wenn man...
 
Häh? Für einen Fortschrittsbalken reicht es nicht, den anfangs auf 0/1 und am Ende auf 100 zu setzen.
Du musst ihn in jedem Schritt auf den entsprechenden Wert setzen und nach dem Wert setzt auch neu Zeichnen lassen.

Also im Stil von:
Fortschittsbalken = atuellerWert/maximalWert *100;
Neuzeichnen;

DArc 18. Jul 2009 14:28

Re: "Sleep"-t das programm wenn man...
 
Zitat:

Zitat von Phoenix
Häh? Für einen Fortschrittsbalken reicht es nicht, den anfangs auf 0/1 und am Ende auf 100 zu setzen.
Du musst ihn in jedem Schritt auf den entsprechenden Wert setzen und nach dem Wert setzt auch neu Zeichnen lassen.

Also im Stil von:
Fortschittsbalken = atuellerWert/maximalWert *100;
Neuzeichnen;


hab ich doch, dass ist nicht der ganze quellcode -_-

himitsu 18. Jul 2009 14:31

Re: "Sleep"-t das programm wenn man...
 
ok, bei 100 MB / 1 GB könnte es schon dauern (ist ja recht selten, daß eine EXE mal so groß ist)


Zitat:

hab ich doch, dass ist nicht der ganze quellcode -_-
das können wir doch nicht wissen, also gehen wir nur davon auß, daß des Alles ist,
denn sonst hättest du ja mehr gepostet :zwinker:

Delphi-Quellcode:
if (Gewicht = Gewicht div 100 * 100) then
=
Delphi-Quellcode:
if Gewicht mod 100 = 0 then

DArc 18. Jul 2009 14:35

Re: "Sleep"-t das programm wenn man...
 
Zitat:

Zitat von himitsu
ok, bei 100 MB / 1 GB könnte es schon dauern (ist ja recht selten, daß eine EXE mal so groß ist)


Zitat:

hab ich doch, dass ist nicht der ganze quellcode -_-
das können wir doch nicht wissen, also gehen wir nur davon auß, daß des Alles ist,
denn sonst hättest du ja mehr gepostet :zwinker:

Delphi-Quellcode:
if (Gewicht = Gewicht div 100 * 100) then
=
Delphi-Quellcode:
if Gewicht mod 100 = 0 then


ich meints auch nicht böse^^

habe eine rar und eine exe datei ... die sind ungefähr 600 mb groß, und noch weitere 4 dateien, sprich 6 * 600mb^^
dann braucht man schon einen ladebalken^^


thx für alle tipps und für das vebresserte if :thumb:


habe es gerade nochmal versucht^^

iwie schuftet er "nur" und zeigt die progressbar net an^^
ich versuchs gleich mit 1gb^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr.
Seite 1 von 3  1 23      

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