Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Timer wird Blockiert (https://www.delphipraxis.net/201162-timer-wird-blockiert.html)

Int3g3r 28. Jun 2019 11:33

AW: Timer wird Blockiert
 
Vielen Dank für die Hilfe!

@Gausi
Delphi-Quellcode:
Application.ProcessMessages
Das habe ich gesucht vielen Dank!

Es funktioniert nun. Quelltext sieht wie folgt aus:

Delphi-Quellcode:
//frmMain

while FormFtpprogress.Visible = true do // Warte auf Timer
begin
   if FormFtpprogress.canHide = true then
         FormFtpprogress.Hide;
   Application.ProcessMessages;
end;
Delphi-Quellcode:
//frmProgress

procedure TFormFtpprogress.FormShow(Sender: TObject);
begin
   canHide := false; //public member
   progressTimer.Enabled := true;
end;

procedure TFormFtpprogress.progressTimerTimer(Sender: TObject);
begin
   canHide := true;
   progressTimer.Enabled := false;
end;

DieDolly 28. Jun 2019 12:26

AW: Timer wird Blockiert
 
Da das jetzt klappt, entferne bitte noch den Vergleich auf True. Sowas macht man nicht :thumb:

Delphi-Quellcode:
while FormFtpprogress.Visible = true do // Warte auf Timer

Int3g3r 28. Jun 2019 14:38

AW: Timer wird Blockiert
 
Zitat:

Zitat von DieDolly (Beitrag 1435552)
Da das jetzt klappt, entferne bitte noch den Vergleich auf True. Sowas macht man nicht :thumb:

Delphi-Quellcode:
while FormFtpprogress.Visible = true do // Warte auf Timer

Also für mich ist das Gegenteil der fall. für mich ist es nicht eindeutig wenn auf "nichts" geprüft wird.
Delphi-Quellcode:
while FormFtpprogress.Visible do
Aber Danke für den Tipp vielleicht sollte ich mich da mal umgewöhnen.

DieDolly 28. Jun 2019 14:41

AW: Timer wird Blockiert
 
https://www.delphipraxis.net/57121-u...t-boolean.html

https://softwareengineering.stackexc...al-out-of-true


mkinzler und Luckie können da bestimmt mehr drüber erzählen.

Delphi.Narium 28. Jun 2019 15:15

AW: Timer wird Blockiert
 
Zitat:

Zitat von Int3g3r (Beitrag 1435564)
Zitat:

Zitat von DieDolly (Beitrag 1435552)
Da das jetzt klappt, entferne bitte noch den Vergleich auf True. Sowas macht man nicht :thumb:

Delphi-Quellcode:
while FormFtpprogress.Visible = true do // Warte auf Timer

Also für mich ist das Gegenteil der fall. für mich ist es nicht eindeutig wenn auf "nichts" geprüft wird.
Delphi-Quellcode:
while FormFtpprogress.Visible do
Aber Danke für den Tipp vielleicht sollte ich mich da mal umgewöhnen.

Es wird aber nicht auf nichts geprüft.

Die Schleife läuft solange, solange alles zwischen while und do wahr ist.
FormFtpprogress.Visible ist entweder wahr (true) oder falsch (false). Das reicht für eine Abfrage vollkommen aus.

Bei Deiner Variante fragst Du immer sowas in der Art:
Delphi-Quellcode:
while true = true do
Weil true aber bereits true ist, muss Du es nicht noch mit true vergleichen.
Andersherum fragst Du sowas in der Art:
Delphi-Quellcode:
while false = true do
Da false aber nie true ist, erübrigt sich der Vergleich von false mit true.

Int3g3r 28. Jun 2019 15:28

AW: Timer wird Blockiert
 
Danke für die Links diese sind sehr Interessant.
Ich wusste nicht das dies zu Fehler führen kann.

Wenn ich mir das im Kopf vorstelle ist es für mich einfach unlogisch nur eine Variable mit "nichts" zu vergleichen. Dazu ist beim Ausdruck
Delphi-Quellcode:
if variable=true then
sofort sichtbar das es sich um einen Boolean handelt, sonst könnte die Variable ein x-beliebiger Datentyp sein. Für mich ist der Quelltext einfacher zu lesen.:shock:

Werde mich aber umgewöhnen.

Mfg Int3g3r

DieDolly 28. Jun 2019 15:30

AW: Timer wird Blockiert
 
Zitat:

Dazu ist beim Ausdruck if variable=true then sofort sichtbar das es sich um einen Boolean handelt, sonst könnte die Variable ein x-beliebiger Datentyp sein.
Mhh nee

Delphi-Quellcode:
if X then

if X = 1 then

if X = 1.25 then

if X = 'test' then

if X = TMyEnumTypes.X

Medium 28. Jun 2019 16:17

AW: Timer wird Blockiert
 
Zitat:

Zitat von Int3g3r (Beitrag 1435569)
sonst könnte die Variable ein x-beliebiger Datentyp sein.

Könnte, wird dir Delphi dank seiner Typsicherheit aber beim Kompilieren um die Ohren werfen ;)

In C sieht das anders aus. Da kann wirklich alles als Bedingung angesehen werden, ohne es explizit hinzuschreiben. In Delphi aber muss das Gesamtergebnis von allem zwischen "if & then", "while & do" und "repeat ... until & ;" ein Boolean werden. Das kann man durch einen expliziten Vergleich erreichen, aber wenn die Variable eh schon vom Typ Boolean ist, kann die einfach nackig da stehen - und es ist sofort klar, dass sie ein Bool sein muss.

p80286 29. Jun 2019 22:10

AW: Timer wird Blockiert
 
Zitat:

Zitat von Int3g3r (Beitrag 1435564)

Also für mich ist das Gegenteil der fall. für mich ist es nicht eindeutig wenn auf "nichts" geprüft wird.

In Delphi gibt es kein "nichts"! Im Gegensatz zu z.B. SQL, da ist "nichts" NULL. In Delphi könnte "nichts" durch einen Leerstring oder einen Nil-Pointer repräsentiert werden, wobei es sich in beiden Fällen um eine klare Definition handelt während "nichts" undefiniert ist. Es handelt sich also nur um eine schlechte Krücke.

Gruß
K-H

Mavarik 30. Jun 2019 13:37

AW: Timer wird Blockiert
 
Zitat:

Zitat von Int3g3r (Beitrag 1435550)
!

Es funktioniert nun. Quelltext sieht wie folgt aus:

Delphi-Quellcode:
//frmMain

while FormFtpprogress.Visible = true do // Warte auf Timer
begin
   if FormFtpprogress.canHide = true then
         FormFtpprogress.Hide;
   Application.ProcessMessages;
end;

Delphi-Quellcode:
Application.Processmessages
ist immer gruselig! Wenn es überschaubar ist, kann/funktioniert es erstmal, aber in komplexen Anwendungen sollte man darauf verzichten, da es ungewollte Seiteneffekte geben kann!

Macht dein FormFtpprogress wenn es angezeigt wird noch etwas "dynamisches"? Oder zeigt es nur eine statische Anzeige?

Mavarik :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr.
Seite 2 von 3     12 3      

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