AGB  ·  Datenschutz  ·  Impressum  







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

TTimer + Schleife

Ein Thema von -187- · begonnen am 8. Apr 2011 · letzter Beitrag vom 9. Apr 2011
Antwort Antwort
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#1

TTimer + Schleife

  Alt 8. Apr 2011, 02:00
Moin,

Ich habe eine while-do Schleife. In dieser While do Schleife wird ein Wert abgefragt: if myIntVar=1 then...
Diese Variable möchte ich jetzt mit einem Timer alle 20sec immer wieder auf 0 setzen: myIntVar:=0;

Solange sich das Programm aber in der Schleife befindet wird das OnTimer Ergeinis nicht ausgelöst. Liegt wohl daran das der Hauptthread mit der Schleife beschäftigt ist und somit nicht auf den Timer reagieren kann.

Wie löst ihr sowas ? Extra Thread?

Oder hab ich jetzt Quatsch erzählt und es geht doch so wie beschrieben ?
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: TTimer + Schleife

  Alt 8. Apr 2011, 02:06
Liegt wohl daran das der Hauptthread mit der Schleife beschäftigt ist und somit nicht auf den Timer reagieren kann.
Delphi-Referenz durchsuchenApplication.ProcessMessages

Aber: das hört sich alles irgendwie merkwürdig gelöst an.
Was hast du denn mit der Schleife vor?
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#3

AW: TTimer + Schleife

  Alt 8. Apr 2011, 05:44
Moin,

du hast Recht, die Sachlage ist wirklich mehr als nur merkwürdig Das "Tool" brauch ich nur für meine privaten Anwendungszwecke sodass eine "dirty Code" Lösung für mich akzeptabel ist.

Was ich vor habe? Da müsst ich zuweit ausholen um das Problem genau zu schildern

Egal, es funktioniert natürlich!

Vielen Dank
  Mit Zitat antworten Zitat
Maik81ftl

Registriert seit: 31. Mär 2011
Ort: Wahlstedt
26 Beiträge
 
FreePascal / Lazarus
 
#4

AW: TTimer + Schleife

  Alt 9. Apr 2011, 13:01
Moin,

du hast Recht, die Sachlage ist wirklich mehr als nur merkwürdig Das "Tool" brauch ich nur für meine privaten Anwendungszwecke sodass eine "dirty Code" Lösung für mich akzeptabel ist.

Was ich vor habe? Da müsst ich zuweit ausholen um das Problem genau zu schildern

Egal, es funktioniert natürlich!

Vielen Dank


Hier eine kurze Frage nochmal von meine seite? die Schleife, welche verwendet wird ist keine endlosschleife oder doch???

wenn nein, würde ich mit der Zeile Timer1.Enabled:= True spielen.

in der Timer Procedure nur einen wert auf 20 stellen und auf "0" zählen lassen denne noch die Abfrage ob Wert = 0, rest erklärt sich denne ggf. von selber.

wenn ja, denne halt i mich mal dezent zurück.
Die Definition eine Bibliothek ist bei mir eine *.so
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: TTimer + Schleife

  Alt 9. Apr 2011, 13:33
Moin,

du hast Recht, die Sachlage ist wirklich mehr als nur merkwürdig Das "Tool" brauch ich nur für meine privaten Anwendungszwecke sodass eine "dirty Code" Lösung für mich akzeptabel ist.

Was ich vor habe? Da müsst ich zuweit ausholen um das Problem genau zu schildern

Egal, es funktioniert natürlich!

Vielen Dank


Hier eine kurze Frage nochmal von meine seite? die Schleife, welche verwendet wird ist keine endlosschleife oder doch???

wenn nein, würde ich mit der Zeile Timer1.Enabled:= True spielen.

in der Timer Procedure nur einen wert auf 20 stellen und auf "0" zählen lassen denne noch die Abfrage ob Wert = 0, rest erklärt sich denne ggf. von selber.

wenn ja, denne halt i mich mal dezent zurück.
Er hat einen (üblen) Hack als Lösung.

Dein Vorschlag ist keine alternative, bessere Lösung, sondern einfach nur mehr Overhead.
Ob es sich um eine Endlosschleife handelt ist völlig unerheblich, da
Solange sich das Programm aber in der Schleife befindet wird das OnTimer Ergeinis nicht ausgelöst. Liegt wohl daran das der Hauptthread mit der Schleife beschäftigt ist und somit nicht auf den Timer reagieren kann.
und trotzdem soll egal was kommt oder gerade läuft
Diese Variable möchte ich jetzt mit einem Timer alle 20sec immer wieder auf 0 setzen: myIntVar:=0;
Darum bringt dein Vorschlag keine Verbesserung, vor allem weil Timer1.Enabled := True; aber auch sowas von gar nichts macht (wenn der Timer schon Enabled ist).

Um eine Reaktion beim Timer hervorzukitzeln, dann schon
Delphi-Quellcode:
Timer1.Enabled := False;
Timer1.Enabled := True;
Aber das Event wird auch nur dann ausgelöst, wenn der Hauptthread dafür Zeit hat, was nicht der Fall ist, wenn der Hauptthread gerade eine Schleife ausführt (egal ob Endlos oder nicht).
Da hilft auf die Schnelle nur ein Application.ProcessMessages (mit allen üblen Nebenwirkungen)
Und in vernünftig macht man dafür 2 separate Threads.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:33 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