Es geht in diesem Fall auch mit nur einer Variable, da es sich hier nur um einen Zeiger auf den mit TTimer.Create(Form1) erstellten Timer.
OK, wenn du später drauf zugreifen willst, dann sollte natürlich das Array für die Timer Global definiert sein, oder du greifst nicht über die Zeiger in einem Timer-Array zu, sondern läßt dir den entsprechenden Timer suchen.
Das mit der INI: Wenn du es so gelernt hast, dann mach es halt so - Delphi ist ja flexiebel und es gibt ja mehrere Möglichkeiten, die nicht unbedingt Falsch sind ^^
Über ein Timer-Array:
Delphi-Quellcode:
Type TForm1 = Class(TForm)
...
Private
Procedure TimerEvent(Sender: TObject);
End;
Var Timer: Array of TTimer;
Procedure TForm1.CreateTimers(Sender: TObject);
Var frconfig: TIniFile;
i, j: Integer;
Begin
frconfig := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'frconfig.ini');
i := frconfig.ReadInteger('Counter', 'Foren', 0);
SetLength(Timer, i);
For j := 1 to i do Begin
Timer[i - 1] := TTimer.Create(Form1);
Timer[i - 1].Interval := frconfig.ReadInteger('Foren', 'Timer' + IntToStr(j), 0);
Timer[i - 1].Tag := j;
Timer[i - 1].Enabled := True;
Timer[i - 1].OnTimer := TimerEvent;
End;
frconfig.Free;
End;
Procedure TForm1.TimerEvent(Sender: TObject);
Begin
ShowMessage('Ich bin Timer: ' + IntToStr(TTimer(Sender).Tag));
End;
Procedure ...
Begin
Timer[0].Enabled := False; // Timer1
Timer[1].Enabled := False; // Timer2
End;
Ohne Timer-Array:
Delphi-Quellcode:
Type TForm1 = Class(TForm)
...
Private
Procedure TimerEvent(Sender: TObject);
End;
Procedure TForm1.CreateTimers(Sender: TObject);
Var frconfig: TIniFile;
Timer: TTimer;
i, j: Integer;
Begin
frconfig := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'frconfig.ini');
i := frconfig.ReadInteger('Counter', 'Foren', 0);
SetLength(Timer, i);
For j := 1 to i do Begin
Timer := TTimer.Create(Form1);
Timer.Name := 'Timer' + IntToStr(j);
Timer.Interval := frconfig.ReadInteger('Foren', 'Timer' + IntToStr(j), 0);
Timer.Tag := j;
Timer.Enabled := True;
Timer.OnTimer := TimerEvent;
End;
frconfig.Free;
End;
Procedure TForm1.TimerEvent(Sender: TObject);
Begin
ShowMessage('Ich bin Timer: ' + IntToStr(TTimer(Sender).Tag));
End;
Procedure ...
Var Timer: TTimer;
Begin
Timer := TTimer(Form1.FindComponent('Timer' + IntToStr(1)));
Timer.Enabled := False; // Timer1
{oder}
TTimer(Form1.FindComponent('Timer' + IntToStr(2))).Enabled := False; // Timer2
End;
Ohne Timer-Variable:
Delphi-Quellcode:
Type TForm1 = Class(TForm)
...
Private
Procedure TimerEvent(Sender: TObject);
End;
Procedure TForm1.CreateTimers(Sender: TObject);
Var frconfig: TIniFile;
i, j: Integer;
Begin
frconfig := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'frconfig.ini');
i := frconfig.ReadInteger('Counter', 'Foren', 0);
SetLength(Timer, i);
For j := 1 to i do
With TTimer.Create(Form1) do Begin
Name := 'Timer' + IntToStr(j);
Interval := frconfig.ReadInteger('Foren', 'Timer' + IntToStr(j), 0);
Tag := j;
Enabled := True;
OnTimer := TimerEvent;
End;
frconfig.Free;
End;
Procedure TForm1.TimerEvent(Sender: TObject);
Begin
ShowMessage('Ich bin Timer: ' + IntToStr(TTimer(Sender).Tag));
End;
Procedure ...
Var Timer: TTimer;
Begin
Timer := TTimer(Form1.FindComponent('Timer' + IntToStr(1)));
Timer.Enabled := False; // Timer1
{oder}
TTimer(Form1.FindComponent('Timer' + IntToStr(2))).Enabled := False; // Timer2
End;