Announcement

Collapse
No announcement yet.

Timer in Konsolenanwendung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Timer in Konsolenanwendung

    Hallo zusammen,

    kann mir jemand bitte sagen, wie ich einen Timer in eine Konsolenanwendung einbaue?
    Die Komponente kann ich ja nicht auf eine Form ziehen, da ja Form nicht vorhanden.
    Habe auch schon folgendes probiert:
    <PRE>
    var Timer1: TTimer;
    ...
    Timer1:= TTimer.Create(self);
    Timer1.Interval:= Minuten*1000;
    ...
    Timer1.Free;
    ...
    </PRE>
    Aber da meckert der Compiler, dass er "self" nicht kennt. Setze ich anstatt "self" "Timer1" ein, schluckt's zwar der Compiler, aber dafür erhalte ich einen Laufzeitfehler.

    Vielen Dank im Voraus!

    Grüsse
    Peter

  • #2
    Hallo,

    ich habe zwar noch keine Konsolenanwendung geschrieben, aber ich kenne das Owner-Problem

    Wie wär's mit TTimer.Create(NIL)?

    Das müsste eigentlich auch gehen.

    Grüße

    Juli

    Comment


    • #3
      Der Owner kann bedenkenlos auf NIL gesetzt werden, wenn man sich selbst um die Freigabe kümmert (ist ja hier der Fall). Ansonsten kann man auf das Freigeben verzichten, dann würde der Owner dies bei seiner Freigabe automatisch mit erledigen.<p>
      Übergibst Du Timer1 als Owner, so ist das zu diesem Zeitpunkt ein nicht initialisiertes Objekt. Diesem eine neue Instanz (deinen erzeugten Timer) hinzuzufügen muss als Scheitern, da der Owner ja noch nicht existiert.<p>
      Schöne Grüße, Mario Noac
      Schöne Grüße, Mario

      Comment


      • #4
        Hallo,

        danke Ihr beiden für die Hilfe. Habe es jetzt aber trotzdem anders gelöst, da ich Probleme mit OnTimer Probleme gehabt habe (besser gesagt: ich habe nicht gewusst, wie ich es anstellen soll, in einer "Form-Umgebung" natürlich kein Problem).
        Hier der Auszug:
        <PRE>
        start:= getTickCount;
        ende:= start + Sekunden*1000;
        while ende > getTickCount do begin
        for i:= 0 to 5000 do begin
        inc(j)
        end;
        //Irgendwas machen
        ...
        end;
        ShowMessage('Ungefähr '+Sekunden+' Sek. vorbei');
        </PRE>
        In der Konsolenanwendung brauch ich nur einen "ungenauen" Timer bzw. Countdown, deshalb bin ich so zufrieden. Es soll nämlich für eine Zeitlang geprüft werden, ob eine Datei in einem Verzeichnis vorhanden ist oder nicht.

        Grüsse Pete

        Comment


        • #5
          Baue noch einen Sleep ein, sonst hast Du 100% Prozessorauslastung.<p>
          Schöne Grüße, Mario Noac
          Schöne Grüße, Mario

          Comment

          Working...
          X