![]() |
Timer während Laufzeit erstellen..
Hey Leute,
ich möchte einen Timer während der Laufzeit erstellen und in diesem eine Prozedur aufrufen. Habe jetzt schon auf mehreren Foren gesucht, jedoch funktionieren die Ansätze nicht so wirklich. Vielleicht hab ich ja einen Fehler gemacht:? Danke im Vorraus! Hier mein Quelltext: unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } TimerEvent: TNotifyEvent; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TimerEvent(Sender: TObject); begin Form1.Caption:='erfolgreich'; end; procedure TForm1.Button1Click(Sender: TObject); var MyTimer:TTimer; begin MyTimer:=TTimer.Create(Form1); MyTimer.Interval:=100; MyTimer.OnTimer:=TimerEvent; MyTimer.Enabled:=True; end; |
AW: Timer während Laufzeit erstellen..
Willkommen im Forum aber...
BITTE Delphi-Tags verwenden und Fehlermeldungen sagen! Ließ dir die Fehlermeldung durch und dann sehen wir weiter. Ans Forum: ich bitte euch höflichst nicht sofort Lösungen vorzutragen denn ein wenig Eigeninitiative muss auch sein! |
AW: Timer während Laufzeit erstellen..
Also ich bekomme keine Fehlermeldungen angezeigt, jedoch tut sich nichts.
Sry aber ich weiß leider noch nicht was Delphi-Tags sind bzw. wie man sie benutzt :pale: |
AW: Timer während Laufzeit erstellen..
Du darfst TimerEvent (blöder Name übrigens) nicht als Event deklarieren sondern es muss als normale Prozedur deklariert sein
Delphi-Quellcode:
Unten dann dementsprechend
private
procedure TimerEvent(Sender: TObject);
Delphi-Quellcode:
Woher du auch immer das mit dem TNotifyEvent hast, es ist falsch.
{ TForm1 }
procedure TForm1.TimerEvent(Sender: TObject); begin Form1.Caption:='erfolgreich'; end; Delphi-Tags fügst du ein, indem du im erweiterten Editor auf den orange/roten-Helm klickst. Frage nebenbei: ist das ein Schulprojekt? :P |
AW: Timer während Laufzeit erstellen..
Zitat:
Mach doch ein Shot ;) So ist er nur am rumraten. gruss |
AW: Timer während Laufzeit erstellen..
Ok habs rausgefunden war gar nicht so schwer :stupid:
Delphi-Quellcode:
Wenn ich es so mache wie du vorgeschlagen hast kommt folgende Fehlermeldung:
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,ExtCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private declarations } procedure TimerEvent(Sender: TObject); public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.TimerEvent(Sender: TObject); begin Form1.Caption:='erfolgreich'; end; procedure TForm1.Button1Click(Sender: TObject); var MyTimer:TTimer; begin MyTimer:=TTimer.Create(Form1); MyTimer.Interval:=100; MyTimer.OnTimer:=TimerEvent; MyTimer.Enabled:=True; end; end.
Delphi-Quellcode:
kam unter anderem dadurch auf TNotifyEvent:
unit1.pas(44,18) Error: Wrong number of parameters specified for call to "TimerEvent"
unit1.pas(33,18) Error: Found declaration: TimerEvent(TObject);
Delphi-Quellcode:
property OnTimer:= TNotifyEvent
und ja es ist ein Schulprojekt:-D |
AW: Timer während Laufzeit erstellen..
Hallöle...:P
Delphi-Quellcode:
Du willst ja was lernen...
procedure TForm1.Button1Click(Sender: TObject);
var MyTimer:TTimer; begin MyTimer:=TTimer.Create(Form1); MyTimer.Interval:=100; MyTimer.OnTimer:=TimerEvent; MyTimer.Enabled:=True; end; 1. Was passiert wenn du den Button mehrfach drückst? 2. Was passiert wenn du den Button mehrfach (innerhalb der 100ms :wink:) drückst? Es geht ja nur ums Prinzip. :stupid: |
AW: Timer während Laufzeit erstellen..
Zitat:
|
AW: Timer während Laufzeit erstellen..
Zitat:
![]() ![]() Delphi referenziert/dereferenziert Pointer oftmals automatisch/implizit. Lazarus FPC wrd hier aber nicht in einem "Delphi"-kompatiblen Modus betrieben, da kann es eventuell sein, daß man sowas manuell/explizit machen muß.
Delphi-Quellcode:
MyTimer.OnTimer := @TimerEvent;
Die Meldung sagt schließlich auch Zitat:
Zum Aufrufen fehlt logischer Weise ein Parameter:
Delphi-Quellcode:
, aber so kann nicht das gewünschte Ergebnis bei raus kommen.
MyTimer.OnTimer := TimerEvent(irgendwas);
Zitat:
Delphi-Quellcode:
Caption := 'erfolgreich'; // oder Self.Caption := 'erfolgreich';
MyTimer := TTimer.Create(Self); |
AW: Timer während Laufzeit erstellen..
@haentschman das ist mir bewusst ich benutze den Button ja nur um herauszufinden ob es überhaupt funktioniert. Später will ich das per Tastendruck machen. Dann kann ich ja auch mehrere Timer erstellen ,die ich nach einem Intervall wieder lösche.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 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