Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Minütlichen (https://www.delphipraxis.net/41763-minuetlichen.html)

runger 8. Mär 2005 09:35


Minütlichen
 
Hallo,

ich würde gerne ein Ereignis aus der aktuellen Uhrzeit ableiten!
Am besten minütlich.

Rainer

alcaeus 8. Mär 2005 09:39

Re: Minütlichen
 
Hallo Rainer,

sowas macht der Timer, aber wie alle wissen hast du den ja bereits entdeckt. Wo liegt das Problem?

Greetz
alcaeus

himitsu 8. Mär 2005 09:41

Re: Minütlichen
 
Mach es am Besten, so wie in meinem "letzten" Beispiel, du brauchst dort nur die Zeiten etwas anpassen > also der Timer kann ja alle 'ner Sekunde laufen und die Sekundenangaben werden einfach auf Minuten umgerechnet ^^

Sharky 8. Mär 2005 09:48

Re: Minütlichen
 
Oder, wenn Du möchtest in einer "Schleife" die Zeit prüfen.

Delphi-Quellcode:
var
  halt : Boolean;

procedure Delay (Value : Integer);
var
  start : Cardinal;
begin
  start := GetTickCount;
  repeat
    Application.ProcessMessages;
  Until (start + value) >= GetTickCount;
end;

procedure TForm1.StartClick(Sender: TObject);
var
  stunde,
  minute,
  sekunde,
  msekunde : Word;
  lminute : Word;
begin
  halt := False;
  DecodeTime(now,stunde,minute,sekunde,msekunde);
  lminute := minute; // Lezte Minuten zahl
  Repeat
    DecodeTime(now,stunde,minute,sekunde,msekunde);
    if (sekunde <> lsekunde) then
    begin
      lminute := minute;
      Memo1.Lines.Add(IntToStr (lsekunde)); // Die Aktion die ablaufen soll
      Delay (200); // Damit die Systemlast nicht zu hoch wird
    end;
  Application.ProcessMessages;
  Until (halt);
end;

procedure TForm1.StopClick(Sender: TObject);
begin
  halt := True;
end;

runger 8. Mär 2005 10:30

Re: Minütlichen
 
Nee,

ich will rein Interessehalber wissen ob man die Zeit per Event abfangen kann!

Noch etwas prinzipielles:
Endlosschleifen blockieren andere Prozesse (ist etwas ungenau formuliert aber im Prinzip richtig). Endlosschleifen scheiden aus.

Rainer

alcaeus 8. Mär 2005 10:32

Re: Minütlichen
 
Zitat:

Zitat von runger
Endlosschleifen blockieren andere Prozesse (ist etwas ungenau formuliert aber im Prinzip richtig). Endlosschleifen scheiden aus.

:shock: Seit wann das denn? Ich habs soeben versucht, nichts passiert. Wenn du mit "blockieren andere Prozesse" meinst, dass deine Anwendung nicht mehr reagiert, dann bau doch einfach ein Application.Processmessages ein ;)

Greetz
alcaeus

toms 8. Mär 2005 10:33

Re: Minütlichen
 
Zitat:

Zitat von runger

ich will rein Interessehalber wissen ob man die Zeit per Event abfangen kann!

Was genau moechtest du denn machen?

runger 8. Mär 2005 10:36

Re: Minütlichen
 
Hallo Sharky,

dein Vorschlag wäre gut wenn..
Delay hat eine ganz unangenehme Nebenwirkung, es wirkt sich nämlich auf Timer und deren Proceduren aus. ( Hab ich hier im Forum schon bis zum erbrechen durchdiskutiert. )
In userem Rogramm gibts jede Menge Timer die laufen müssen.
Unter Umständen werden während delay alle Timer gestoppt.

Rainer

himitsu 8. Mär 2005 10:45

Re: Minütlichen
 
Zitat:

Zitat von runger
Endlosschleifen blockieren andere Prozesse (ist etwas ungenau formuliert aber im Prinzip richtig).

[oh]Application.ProcessMessages;[/oh]

runger 8. Mär 2005 10:47

Re: Minütlichen
 
Hallo,

Voll daneben.Löst das Problem nicht. Probiers aus.Timer werden blockiert und bleiben auch geblockt solange delay läuft, auch wenn processmessages drinsteht.

Rainer

alcaeus 8. Mär 2005 10:48

Re: Minütlichen
 
Das ist klar dass Timer in der eigenen Anwendung während dem Sleep ihre Ereignisse nicht feuern können :roll:
Das heißt aber nicht, dass andere Prozesse blockiert sind :!:

Greetz
alcaeus

Luckie 8. Mär 2005 10:52

Re: Minütlichen
 
Andere Prozesse blockiern auch nicht, wenn der eigenen Prozess in einer Endlosschleife steckt.

runger 8. Mär 2005 11:02

Re: Minütlichen
 
Ääääääääh,

repeat
until true=false

100% CPU Auslastung. Ich hab doch extra darauf hingewiesen, dass die Formulierung etwas flapsig war und nicht vollständig den Realitäten entspricht.

Hauptsache es ist etwas dazu gesagt!
Rainer

Phoenix 8. Mär 2005 11:04

Re: Minütlichen
 
Zitat:

Zitat von Luckie
Andere Prozesse blockiern auch nicht, wenn der eigenen Prozess Thread in einer Endlosschleife steckt.

Ich würde an der Stelle tatsächlich einen separaten Thread machen, welcher in einer Endlosschleife (ggf. mit Slepp pausiert) den Sekundenwechsel abprüft. Ist die Bedingung (neue Sekunde) erfüllt wird einfach eine Message losgeschickt, auf die wird dann im Haupt-thread einfach reagiert.

Edit Nachtrag: Ist eigentlich auch ein Timer im Eigenbau, aber deutlichst flexibler und der lässt sich auch nicht so einfach durch andere Sachen aus der Ruhe bringen, da eigener Thread. Zumal man so an eine Nachricht eines einzelnen "Timers" ggf. sogar mehrere Events auslösen kann.

himitsu 8. Mär 2005 11:05

Re: Minütlichen
 
Keine 100% mehr ^^

Delphi-Quellcode:
repeat

  ...
 
  Application.ProcessMessages;
  Sleep(200);
until false;

Luckie 8. Mär 2005 11:08

Re: Minütlichen
 
Zitat:

Zitat von runger
Delphi-Quellcode:
repeat
until true=false
100% CPU Auslastung.

Logisch. Aber solltest du nichts an der Priorität gedreht haben ,wird Windows deinem Prozess die Rechnezeit entziehen, so bald ein anderer Prozess im System ist der auch Rechenzeit braucht. Starte mal dein Programm und Render dann ein Video oder rippe MP3s von einer CD.

Phoenix 8. Mär 2005 11:08

Re: Minütlichen
 
Zitat:

Zitat von himitsu
Keine 100% mehr ^^

Jungs, könntet ihr alle bitte etwas zurückstecken? Sonst muss ich hier nen Mod (ggf. jemand anderen als Luckie, da er in dieser Sache ja leider vorbelastet ist) bitten, auch hier dicht zu machen.

Sowas geht auf einer reinen sachlichen Ebene. Und wenn einen hier die Art eines anderen auf den Geist geht, dann kann man dem einfach aus dem Weg gehen und den Beitrag hier einfach ignorieren und nicht mehr reinschauen.

Edit: BB-Tags und undeutliche Formulierung..

Luckie 8. Mär 2005 11:11

Re: Minütlichen
 
Äh? Wieso? Ich habe ihm nur seine 100% Systemauslastung erklärt. :gruebel:

Phoenix 8. Mär 2005 11:13

Re: Minütlichen
 
Zitat:

Zitat von Luckie
Äh? Wieso? Ich habe ihm nur seine 100% Systemauslastung erklärt. :gruebel:

Ich meinte auch eher himitsu und runger, die mit sinnlosen Endlosscheifen-Codes hier voll am Thema vorbeiargumentieren und nicht Deinen Beitrag. Der ist dazwischen gerutscht.

runger 8. Mär 2005 12:34

Re: Minütlichen
 
Hallo Phoenix,

ich danke dir. Ist eine gute Idee. Ich werd das mal angehen.
Ich informier dich, wenns gelingt oder auch nicht.

Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz