AGB  ·  Datenschutz  ·  Impressum  







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

timer

Ein Thema von arcon · begonnen am 14. Sep 2010 · letzter Beitrag vom 15. Sep 2010
Antwort Antwort
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: timer

  Alt 14. Sep 2010, 14:46
Ich habe mein DOS-Programm (TP 7.0) in Delphi konvertiert. Ich kann es jetzt unter TP 7.0 und TurboDelphi kompilieren. Oh, ich wollte doch immernoch die Konvertierung veröffentlichen. Mal sehen, ob ich das heute abend eben mach.
Vom Thema abgekommen. In der Tastaturabfrage habe ich einfach alle Funktionen eingeschliffen. Wird keine Taste gedrückt, dann kommen die anderen Sachen dran. Externe Geräte, Abfrage ob der Bildschirmschoner starten muss, Kommunikation mit den anderen Stationen im Netz.

Bleibt die Frage, musst du da mit Freds agieren?
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
arcon

Registriert seit: 8. Jun 2010
71 Beiträge
 
#2

AW: timer

  Alt 14. Sep 2010, 15:02
ich muss jedenfalls einen timer programmieren, der es mir ermöglicht .. unabhängig vom hauptprogramm .. die zeit herunterzuzählen .. dabei soll das hauptprogramm in seiner fkt. nicht beeinträchtigt oder schlafen gelegt werden .. da das hauptprogramm ja ständig in nem bestimmten zyklusinterverall das "programm" überwachen soll ..

deswegen wäre ein fred besser ..
  Mit Zitat antworten Zitat
arcon

Registriert seit: 8. Jun 2010
71 Beiträge
 
#3

AW: timer

  Alt 14. Sep 2010, 15:31
ich habe folgenden code im web gefunden .. jedoch habe ich damit meine probleme ...

Code:
type
  // die Demo-Thread-Timer-Klasse
  TTimerThread = class(TThread)
  private
    FID: Integer;     // ID des Threads
    FTimeout: Integer; // Laufzeit in Millisekunden
    FStep: Integer;   // Schrittweite in Millisekunden
    FLog: TStrings;   // Ausgaben hier anfügen
    FLogLine: String; // Zeile, die synchronisiert angefügt werden soll
  protected
    procedure SyncLogLineAdd; // synchronisierte Anfügemethode
    procedure LogIt(const S: String); // interne Logausgabe
  public
    // neues Objekt anlegen, beschreibende Werte direkt übergeben
    constructor Create(const AID, ATimeout, AStep: Integer; // s.o.
      const ALog: TStrings; // s.o.
      const AOnTerminate: TNotifyEvent); // beim Ende aufrufen (synchronisiert)
    procedure Execute; override; // hier wird gearbeitet -> also gewartet... ;)
  end;

 
implementation

 
// ----------------------------------------------------------------------------- 
// TTimerThread
 
constructor TTimerThread.Create(const AID, ATimeout, AStep: Integer;
  const ALog: TStrings; const AOnTerminate: TNotifyEvent);
begin
  inherited Create(TRUE); // gestoppt erzeugen
  // Werte übernehmen
  FID := AID;
  FTimeout := ATimeout;
  FStep := AStep;
  FLog := ALog;
  OnTerminate := AOnTerminate;
  FreeOnTerminate := TRUE;
  if Assigned(FLog) then // der Konstruktor läuft im Hauptthread, direkt ausgeben
    FLog.Add('+++Thread(ID:'+IntToStr(FID)+', Timeout:'+IntToStr(FTimeout)+'ms, Step:'+IntToStr(FStep)+'ms) erzeugt.');
  Resume; // los gehts! 
end;

 
procedure TTimerThread.Execute;
begin
  while ( (FTimeout >= 0) // solange der Timer noch nicht abgelaufen ist
          and             // und
          (NOT Terminated) // der Thread noch laufen soll
        ) do begin
    LogIt('  Thread '+IntToStr(FID)+': noch '+IntToStr(FTimeout)+'ms...');
    Sleep(FStep); // nur den Thread schlafen legen - die Anwendung blockiert nicht! 
    Dec(FTimeout,FStep); // Auszeit anpassen
  end;
  LogIt('---Thread '+IntToStr(FID)+': beendet.');
end;

 
// interne Logausgabe (synchronisiert) machen
procedure TTimerThread.LogIt(const S: String);
begin
  FLogLine := S; // die Ausgabe puffern
  Synchronize(SyncLogLineAdd); // und synchronisiert in Log schreiben
end;

 
// Methode, um synchronisiert eine Logzeile zu schreiben
procedure TTimerThread.SyncLogLineAdd;
begin
  if Assigned(FLog) then
    FLog.Add(FLogLine); // gepufferte Zeile ausgeben (jetzt im Hauptthread!)
end;
das ganze habe ich auf
http://www.delphi-library.de/viewtopic.php?p=463391
gefunden.

kann mir jemand erklären, wie und wo ich das ereignis hinschreiben muss, sobald der timer abgelaufen ist ?
  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 14:40 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