AW: Timer wird Blockiert
Vielen Dank für die Hilfe!
@Gausi
Delphi-Quellcode:
Das habe ich gesucht vielen Dank!
Application.ProcessMessages
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; |
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
|
AW: Timer wird Blockiert
Zitat:
Delphi-Quellcode:
Aber Danke für den Tipp vielleicht sollte ich mich da mal umgewöhnen.
while FormFtpprogress.Visible do
|
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. |
AW: Timer wird Blockiert
Zitat:
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:
Weil true aber bereits true ist, muss Du es nicht noch mit true vergleichen.
while true = true do
Andersherum fragst Du sowas in der Art:
Delphi-Quellcode:
Da false aber nie true ist, erübrigt sich der Vergleich von false mit true.
while false = true do
|
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:
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:
if variable=true then
Werde mich aber umgewöhnen. Mfg Int3g3r |
AW: Timer wird Blockiert
Zitat:
Delphi-Quellcode:
if X then
if X = 1 then if X = 1.25 then if X = 'test' then if X = TMyEnumTypes.X |
AW: Timer wird Blockiert
Zitat:
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. |
AW: Timer wird Blockiert
Zitat:
Gruß K-H |
AW: Timer wird Blockiert
Zitat:
Delphi-Quellcode:
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!
Application.Processmessages
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. |
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