AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer wird Blockiert

Ein Thema von Int3g3r · begonnen am 28. Jun 2019 · letzter Beitrag vom 1. Jul 2019
Antwort Antwort
Seite 2 von 3     12 3      
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Timer wird Blockiert

  Alt 28. Jun 2019, 12:33
Vielen Dank für die Hilfe!

@Gausi 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;
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#12

AW: Timer wird Blockiert

  Alt 28. Jun 2019, 13:26
Da das jetzt klappt, entferne bitte noch den Vergleich auf True. Sowas macht man nicht

while FormFtpprogress.Visible = true do // Warte auf Timer
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Timer wird Blockiert

  Alt 28. Jun 2019, 15:38
Da das jetzt klappt, entferne bitte noch den Vergleich auf True. Sowas macht man nicht

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.
while FormFtpprogress.Visible do Aber Danke für den Tipp vielleicht sollte ich mich da mal umgewöhnen.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#14

AW: Timer wird Blockiert

  Alt 28. Jun 2019, 15:41
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.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#15

AW: Timer wird Blockiert

  Alt 28. Jun 2019, 16:15
Da das jetzt klappt, entferne bitte noch den Vergleich auf True. Sowas macht man nicht

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.
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: 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: while false = true do Da false aber nie true ist, erübrigt sich der Vergleich von false mit true.
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Timer wird Blockiert

  Alt 28. Jun 2019, 16:28
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 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.

Werde mich aber umgewöhnen.

Mfg Int3g3r
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#17

AW: Timer wird Blockiert

  Alt 28. Jun 2019, 16:30
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 = 'testthen

if X = TMyEnumTypes.X
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#18

AW: Timer wird Blockiert

  Alt 28. Jun 2019, 17:17
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#19

AW: Timer wird Blockiert

  Alt 29. Jun 2019, 23:10

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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: Timer wird Blockiert

  Alt 30. Jun 2019, 14:37
!

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;
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 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