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
Seite 1 von 2  1 2      
Bryan

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

Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 14:14
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;
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#2

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 14:24
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!
  Mit Zitat antworten Zitat
Bryan

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

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 14:36
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
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#4

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 14:56
Du darfst TimerEvent (blöder Name übrigens) nicht als Event deklarieren sondern es muss als normale Prozedur deklariert sein
Delphi-Quellcode:
private
 procedure TimerEvent(Sender: TObject);
Unten dann dementsprechend
Delphi-Quellcode:
{ TForm1 }
procedure TForm1.TimerEvent(Sender: TObject);
begin
Form1.Caption:='erfolgreich';
end;
Woher du auch immer das mit dem TNotifyEvent hast, es ist falsch.

Delphi-Tags fügst du ein, indem du im erweiterten Editor auf den orange/roten-Helm klickst.

Frage nebenbei: ist das ein Schulprojekt?

Geändert von SneakyBagels (22. Mai 2017 um 15:04 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 16:17
Zitat:
Delphi-Tags fügst du ein, indem du im erweiterten Editor auf den orange/roten-Helm klickst.
Ich denke er fragt sich jetzt welcher erweiterter Editor und welcher Helm.

Mach doch ein Shot So ist er nur am rumraten.

gruss
  Mit Zitat antworten Zitat
Bryan

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

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 18:41
Ok habs rausgefunden war gar nicht so schwer


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;

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.
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

und ja es ist ein Schulprojekt
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 18:59
Hallöle...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MyTimer:TTimer;
begin
  MyTimer:=TTimer.Create(Form1);
  MyTimer.Interval:=100;
  MyTimer.OnTimer:=TimerEvent;
  MyTimer.Enabled:=True;
end;
Du willst ja was lernen...
1. Was passiert wenn du den Button mehrfach drückst?
2. Was passiert wenn du den Button mehrfach (innerhalb der 100ms ) drückst? Es geht ja nur ums Prinzip.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#8

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 19: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
Online

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

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 19: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);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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

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

AW: Timer während Laufzeit erstellen..

  Alt 22. Mai 2017, 19: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
Antwort Antwort
Seite 1 von 2  1 2      

 

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 16:01 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