AGB  ·  Datenschutz  ·  Impressum  







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

Timer während Laufzeit erstellen..

Ein Thema von Bryan · begonnen am 22. Mai 2017 · letzter Beitrag vom 22. Mai 2017
Antwort Antwort
SneakyBagels
(Gast)

n/a Beiträge
 
#1

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 18:24
Zitat:
Wenn ich es so mache wie du vorgeschlagen hast kommt folgende Fehlermeldung:
Delphi-Quellcode:
unit1.pas(44,18) Error: Wrong number of parameters specified for call to "TimerEvent"
unit1.pas(33,18) Error: Found declaration: TimerEvent(TObject);
kam unter anderem dadurch auf TNotifyEvent:
property OnTimer:= TNotifyEvent
Ist mir unverständlich. Liegt vielleicht an Lazurus?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.398 Beiträge
 
Delphi 12 Athens
 
#2

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 18:33
Ist mir unverständlich. Liegt vielleicht an Lazurus?
Nee, Lazarus hatte ja bei Delphi abgeguckt und nutzt haargenau die selbe Schnittstelle/Signatur.
http://wiki.freepascal.org/TTimer > http://lazarus-ccr.sourceforge.net/d...stomtimer.html

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ß.
MyTimer.OnTimer := @TimerEvent;
Die Meldung sagt schließlich auch
Zitat:
Wrong number of parameters specified for call to "TimerEvent"
, also will der Compiler diese Methode aufrufen und nicht deren Zeiger verwenden.

Zum Aufrufen fehlt logischer Weise ein Parameter: MyTimer.OnTimer := TimerEvent(irgendwas); , aber so kann nicht das gewünschte Ergebnis bei raus kommen.


Zitat:
Delphi-Quellcode:
Form1.Caption := 'erfolgreich';

MyTimer := TTimer.Create(Form1);
Und wer dir diese Verwendung der Variable "Form1" gezeigt hat, also innerhalb der TForm1-Klasse, der gehört ausgepeitscht.
Delphi-Quellcode:
Caption := 'erfolgreich'; // oder Self.Caption := 'erfolgreich';

MyTimer := TTimer.Create(Self);
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Mai 2017 um 18:46 Uhr)
  Mit Zitat antworten Zitat
Bryan

Registriert seit: 22. Mai 2017
7 Beiträge
 
#3

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 18:38
@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.
  Mit Zitat antworten Zitat
Bryan

Registriert seit: 22. Mai 2017
7 Beiträge
 
#4

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 19:39
Ich habe da was Interessantes gefunden tue mich aber ber der Umsetzung schwer
https://www.delphi-treff.de/object-p...ethodenzeiger/
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#5

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 20:39
Womit genau tust du dich schwer?
  Mit Zitat antworten Zitat
Bryan

Registriert seit: 22. Mai 2017
7 Beiträge
 
#6

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 20:55
Womit genau tust du dich schwer?
Ich habe das jetzt so gemacht wie im Beispiel es wird auch fehlerfrei kompiliert jedoch tut sich immernoch nichts...

Delphi-Quellcode:
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 }
  TimerEvent : procedure(Sender: TObject) of object;
  public
    { public declarations }
  end;

var
  Form1: TForm1;MyTimer:TTimer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TimerEvent(Sender:TObject);
begin
Form1.caption:='erfolgreich';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MyTimer:=TTimer.Create(Form1);
MyTimer.Interval:=100;
MyTimer.OnTimer:=TimerEvent;
MyTimer.Enabled:=True;
end;


end.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
789 Beiträge
 
#7

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 21:08
Delphi-Quellcode:
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;
  MyTimer: TTimer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.TimerEvent(Sender:TObject);
begin
  Caption := 'erfolgreich';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MyTimer := TTimer.Create(self);
  MyTimer.Interval := 100;
  MyTimer.OnTimer := @TimerEvent;
  MyTimer.Enabled := True;
end;


end.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#8

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 21:09
Mach mal wieder alles rückgängig und bleib bei normalen Variablen bis du alle Grundlagen verstanden hast.

Nimm Olli73's Lösung bis du alle Grundlagen verstanden hast.
Das ist nicht böse gemeint, sondern soll einfach nur eine Hilfe sein.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 21:39
Hallo,
wenn ich nicht weiss, wie die Timer-Methode aussehen muss,
lege ich einen Timer aufs Form, Doppelklick drauf und
voila
Methode + notwendige Parameter sind da.

Timer von Form wieder löschen und Methode habe ich im Kopf.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.398 Beiträge
 
Delphi 12 Athens
 
#10

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 22:21
Ich habe das jetzt so gemacht wie im Beispiel es wird auch fehlerfrei kompiliert jedoch tut sich immernoch nichts...

Delphi-Quellcode:
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 }
  TimerEvent : procedure(Sender: TObject) of object;
  public
    { public declarations }
  end;

var
  Form1: TForm1;MyTimer:TTimer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TimerEvent(Sender:TObject);
begin
Form1.caption:='erfolgreich';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MyTimer:=TTimer.Create(Form1);
MyTimer.Interval:=100;
MyTimer.OnTimer:=TimerEvent;
MyTimer.Enabled:=True;
end;


end.
Ob nun selbstgemacht (TimerEvent : procedure(Sender: TObject) of object; ) oder vordefiniert (TimerEvent : TNotifyEvent; ), es kommt auf das Selbe raus und du hattest das doch schonmal, wo es auch schon nicht ging.

TimerEvent (das Feld/Variable) ist leer (nil) und somit wird auch "nichts" an OnTimer übergeben.
Ein Therapeut entspricht 1024 Gigapeut.
  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 03:12 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