Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Probleme beim Einbau des Timers (https://www.delphipraxis.net/137166-probleme-beim-einbau-des-timers.html)

aaaaaaaaaa_10 15. Jul 2009 12:56


Probleme beim Einbau des Timers
 
Hallo,
habe folgende Prozedur :

Delphi-Quellcode:
procedure TMomFiles.DreiSekDateiFuellen(const Filename: string);
var
  LogDatei, DatName, temp1, temp2: string;
  i : integer;
  Mom, Sek: TStringList;
begin
  DatName := extractfilepath(application.exename)+'Mom3sek_'+Kennung+'.txt';
  Mom := TStringList.Create;
  Sek := TstringList.Create;
  try
    LogDatei := extractfilepath(application.exename)+'mom'+Kennung+'.log';
    Mom.LoadFromFile(Logdatei);
    Sek.Add(Mom[0]);
    temp1 := Mom.Strings[Mom.Count-1];
    temp2 := Sek.Strings[Sek.Count-1];
    if temp1 <> temp2 then               [b]die letzte Zeile einer vorhandenen Datei soll immer (bei Veränderungen)in die neue
    begin                                   Datei hinten angehängt werden[/b]
        Sek.Add(Mom[Mom.Count-1]);
    end;
    Sek.SaveToFile(DatName);
  finally
    Sek.Free;
    Mom.Free;
  end;
end;
Wie realisiere ich das "Testen auf Veränderungen der letzten Zeile" mit einem Timer? Weiß nicht wie ich da anfangen kann.

Stormy 15. Jul 2009 13:28

Re: Probleme beim Einbau des Timers
 
Hi,

also du erstellst dir nen Timer den du erstmal auf Enabled:=False setzt und fügst dann deinen Code in das OnTimer-Event ein.
Pseudocode wäre:

OnTimer
begin
wenn letzte_Zeile_alt.Text <> letzte_Zeile_neu.Text dann
//letzte zeile wurde geändert
begin
//deine Reaktion darauf
end;
end;

Evl. den Intervall noch nach belieben anpassen.

EDIT: natürlich den Timer auch wieder auf Enabled:=True setzen wenn es überprüfen soll.


Gruß
Stormy

aaaaaaaaaa_10 15. Jul 2009 13:34

Re: Probleme beim Einbau des Timers
 
Ich habe aber keine Form,kann ich trotzdem einfach Timer1 : TTimer einfügen?

Stormy 15. Jul 2009 13:40

Re: Probleme beim Einbau des Timers
 
Kurz ja.
Ansonsten kannst du auch eine Schleife dafür benutzen (while do / repeat until) oder eine Funktion sich selber aufrufen lassen (Rekursion) was ich dann aber in einen anderen Thread auslagern würde. Um den Intervall zu setzen kannst du z.B. Sleep verwenden.


Gruß
Stormy

aaaaaaaaaa_10 15. Jul 2009 13:46

Re: Probleme beim Einbau des Timers
 
Das ist meine TimerProcedure:

Delphi-Quellcode:
procedure TMomFiles.MyTimerEvent;
var
  Sek, Mom : TStringList;
  DatName, LogDatei, temp1, temp2 : string;
begin
  DatName := extractfilepath(application.exename)+'Mom3sek_'+Kennung+'.txt';
  LogDatei := extractfilepath(application.exename)+'mom'+Kennung+'.log';
  Mom := TStringList.Create;
  Sek := TStringList.Create;
  try
    Mom.LoadFromFile(Logdatei);
    Sek.LoadFromFile(DatName);
    temp1 := Mom.Strings[Mom.Count-1];
    temp2 := Sek.Strings[Sek.Count-1];
    if temp1 <> temp2 then
    begin
        ShowMessage('verschiedene Strings');
        Sek.Add(Mom[Mom.Count-1]);
    end;
    Sek.SaveToFile(DatName);
  finally
    Sek.Free;
    Mom.Free;
  end;
end;
Die will ich jetzt aber in einer anderen Unit aufrufen mit :

Delphi-Quellcode:
MyTimer := TTimer.Create(nil);
  MyTimer.Enabled := True;
  MyTimer.Interval := 1000;
  MyTimer.OnTimer := MomFiles.MyTimerEvent;
//Fehler : Inkompatible Typen 'Lister der parameter unterschiedliche'

aaaaaaaaaa_10 15. Jul 2009 14:00

Re: Probleme beim Einbau des Timers
 
Ups, was vergessen

Delphi-Quellcode:
procedure TMomFiles.MyTimerEvent;
muss ja zu

Delphi-Quellcode:
procedure TMomFiles.MyTimerEvent(Sender:TObject);
werden.

Stormy 15. Jul 2009 14:01

Re: Probleme beim Einbau des Timers
 
War schon am absenden aber dir ist es schneller aufgefallen. :thumb:


Gruß
Stormy


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 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