Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variable Timer (https://www.delphipraxis.net/113928-variable-timer.html)

FGD 16. Mai 2008 21:22


Variable Timer
 
Hoffentlich is da der richtige Threadtitel...
Delphi-Quellcode:
type Timer = Array(*[1..40]*) of TTimer;

procedure FNummerTimerstart(NR: Integer);
begin
 if Form1.RadioGroup1.itemindex =0 then
 Timer[NR].enabled := true;
 if Form1.RadioGroup1.itemindex =1 then
 begin
  Nr := Nr+10;
  Timer[NR].enabled := true;
 end;
 if Form1.RadioGroup1.itemindex =2 then
 begin
  Nr := Nr+20;
  Timer[NR].enabled := true;
 end;
 if Form1.RadioGroup1.itemindex =3 then
 begin
  Nr := Nr+30;
  Timer[NR].enabled := true;
 end;
end;
Aufgerufen zum Beispiel mit:
Delphi-Quellcode:
FNummerTimerstart(2);
Ich hab mich hieran orientiert:
http://www.wer-weiss-was.de/theme159...le1957127.html
Die Timer gibts aber schon.
Zum Problem, dort werden eckige Klammern [] verwendet, bei mir gibts da eine Fehlermeldung:
Code:
[Fehler]: '(' erwartet, aber '[' gefunden
Wenn ich jetzt normale Klammern () nehme:
Code:
[Fehler]: Record, Objekt oder Klassentyp erforderlich
Was ist hier falsch? :wall:

DeddyH 16. Mai 2008 21:28

Re: Variable Timer
 
Das verstehe ich ehrlich gesagt nicht. Die eckigen Klammern müssten eigentlich richtig sein. Allerdings wäre es wohl besser, wenn das statt einer Prozedur eine Methode Deines Formulars wäre.

Matze 16. Mai 2008 21:30

Re: Variable Timer
 
Hallo,

nimm "var" anstelle von "type":

Delphi-Quellcode:
var Timer: array(*[1..40]*) of TTimer;
Denk auch daran, die Timer zu erzeugen.

Grüße

FAlter 16. Mai 2008 21:31

Re: Variable Timer
 
Hi,

nenn den Typ mal z. B. TTimerArray. Und dann brauchst du eine Variable Timer vom Typ TTimerArray.

Mfg
FAlter

tomsel 16. Mai 2008 21:32

Re: Variable Timer
 
Du hast keine Variable vom Typ Timer deklariert, sonden verwendest statt dessen den Typbezeichner, als wäre er eine.



Delphi-Quellcode:
...
var
  timers: Timer;
begin
  timers[0] := humbug;
end;

DeddyH 16. Mai 2008 21:36

Re: Variable Timer
 
Also nochmal im Ganzen:
Delphi-Quellcode:
type
  TTimerArray = array[1..10] of TTimer;
 
  TForm1 = class(TForm)
  ...
  private
    FTimerArray: TTimerArray;
  ...
  end;
Jetzt noch im OnCreate die Timer anlegen und OnDestroy wieder freigeben.

Fussball-Robby 16. Mai 2008 21:36

Re: Variable Timer
 
Und die Funktion kannst du auch ziemlich verkürzen:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
  private
    procedure FNummerTimerstart(NR: Integer);
  //..
  end;

implementation

procedure TForm1.FNummerTimerstart(NR: Integer);
begin
  case RadioGroup1.ItemIndex of
    1: Inc(Nr, 10);
    2: Inc(Nr, 20);
    3: Inc(Nr, 30);
  end;
  {oder:
  Inc(Nr, RadioGroup1.ItemIndex * 10);}
  Timer[NR].Enabled := True;
end;

FGD 16. Mai 2008 22:05

Re: Variable Timer
 
Zitat:

Zitat von DeddyH
Das verstehe ich ehrlich gesagt nicht. Die eckigen Klammern müssten eigentlich richtig sein. Allerdings wäre es wohl besser, wenn das statt einer Prozedur eine Methode Deines Formulars wäre.

Funktionen/Prozeduren hab ich verstanden, Methoden noch nicht.
Zitat:

Zitat von Matze
Hallo,

nimm "var" anstelle von "type":

Delphi-Quellcode:
var Timer: array(*[1..40]*) of TTimer;
Denk auch daran, die Timer zu erzeugen.

Grüße

und
Zitat:

Zitat von FAlter
Hi,

nenn den Typ mal z. B. TTimerArray. Und dann brauchst du eine Variable Timer vom Typ TTimerArray.

Mfg
FAlter

Da gibts eine schöne Zugriffsverletzungen, obwohl die Timer bereits auf dem Formular sind oder ist das, dass Problem :?:
Zitat:

Zitat von Fussball-Robby
Und die Funktion kannst du auch ziemlich verkürzen:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
  private
    procedure FNummerTimerstart(NR: Integer);
  //..
  end;

implementation

procedure TForm1.FNummerTimerstart(NR: Integer);
begin
  case RadioGroup1.ItemIndex of
    1: Inc(Nr, 10);
    2: Inc(Nr, 20);
    3: Inc(Nr, 30);
  end;
  {oder:
  Inc(Nr, RadioGroup1.ItemIndex * 10);}
  Timer[NR].Enabled := True;
end;

Gefällt mir gut aber, auch Zugriffsverletzung

Matze 16. Mai 2008 22:08

Re: Variable Timer
 
Ich vermute, du hast die Timer nicht erzeugt:

Delphi-Quellcode:
for i := 0 to 39 do
begin
  Timer[i] := TTimer.Create(self);
  Timer[i].Interval := ...
  // ...
end;
Grüße

Edit: "Interval" schreibt man mit einem "l".

FGD 16. Mai 2008 22:27

Re: Variable Timer
 
Die Timer sind aber auf dem Formular schon vorhanden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.
Seite 1 von 2  1 2      

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