AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Timer.onTimer kann nicht zugewiesen werden
Thema durchsuchen
Ansicht
Themen-Optionen

Timer.onTimer kann nicht zugewiesen werden

Ein Thema von Kaktus621 · begonnen am 9. Feb 2008 · letzter Beitrag vom 9. Feb 2008
Antwort Antwort
Kaktus621

Registriert seit: 6. Sep 2006
2 Beiträge
 
#1

Timer.onTimer kann nicht zugewiesen werden

  Alt 9. Feb 2008, 12:07
Hallo !

Ich habe ein kleines Problem mit Timern. Ich habe eine Unit erstellt, die die Klasse "TConroller" beinhaltet. In ihr soll ein Timer gestartet werden, der zuerst 'inTime' Millisekunden wartet und anschließend alle 100 ms eine Variable hochzählt.
Mein Problem ist hierbei allerdings, dass ich beim Aufruf 'timer.OnTimer := startDiff;' eine Fehlermeldung erhalte :

Zitat:
control.pas(30,31) Error: Wrong number of parameters specified for call to "startDiff"
control.pas(18,15) Hint: Found declaration: TController.startDiff(TObject)
control.pas(53) Fatal: There were 1 errors compiling module, stopping
Hier der komplette Quelltext der Unit :

Delphi-Quellcode:
unit control;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, ExtCtrls;

type
  { TControl }

  TController = class(TObject)
  private
    timer : TTimer;
    diff : integer;
    firstEvent : boolean;
    procedure startDiff(Sender : TObject);
  public
    constructor Create(inTime : integer);
    procedure stopDiff();
  end;


implementation
  constructor TController.Create(inTime : integer);
  begin
    timer := TTimer.Create(nil);
    timer.Interval := inTime;
    timer.OnTimer := startDiff;
    timer.Enabled := true;
    firstEvent := true;
  end;
  
  procedure TController.startDiff(Sender : TObject);
  begin
    if firstEvent then begin
      timer.Enabled := false;
      timer.Interval := 100;
      timer.Enabled := true;
      firstEvent := false;
    end else begin
      inc(diff);
    end;
  end;

   procedure TController.stopDiff();
   begin
     timer.Enabled := false;
   end;
end.
Ich kann den Timer nicht per Objekt Inspector einfügen und die Methode so zuweisen, da kein Frame in der Unit/Klasse exsistiert

Ich wäre über Hilfe sehr dankbar
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Timer.onTimer kann nicht zugewiesen werden

  Alt 9. Feb 2008, 12:30
wenn mich nicht alles täuscht musst du ihm doch nur noch ein nil zuweisen also so:

Delphi-Quellcode:
  constructor TController.Create(inTime : integer);
  begin
    timer := TTimer.Create(nil);
    timer.Interval := inTime;
    timer.OnTimer := startDiff(nil);
    timer.Enabled := true;
    firstEvent := true;
  end;
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Timer.onTimer kann nicht zugewiesen werden

  Alt 9. Feb 2008, 12:32
Hast du es schon mit einem @ vor dem Methodennamen versucht? Und es ist sicher falsch, einen Parameter anzugeben (nil).
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Timer.onTimer kann nicht zugewiesen werden

  Alt 9. Feb 2008, 12:35
Zitat von lbccaleb:
wenn mich nicht alles täuscht musst du ihm doch nur noch ein nil zuweisen also so:

Delphi-Quellcode:
  constructor TController.Create(inTime : integer);
  begin
    timer := TTimer.Create(nil);
    timer.Interval := inTime;
    timer.OnTimer := startDiff(nil);
    timer.Enabled := true;
    firstEvent := true;
  end;
so auf keinen fall.

Ist das der vollständige Quelltext den du da gepostet hast mit genau den gleichen leerzeilen etc. oder verschweigst du uns einen gewissen Teil?
Grund für meine Frage: Bei mir compiliert es ohne Probleme sobald ich "{$mode objfpc}" entferne. Grund für das entfernen ist das der Mode bei meinem Delphi nicht bekannt ist. Wofür verwendest du diesen mode?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#5

Re: Timer.onTimer kann nicht zugewiesen werden

  Alt 9. Feb 2008, 12:46
Das dürfte Lazarus sein
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Kaktus621

Registriert seit: 6. Sep 2006
2 Beiträge
 
#6

Re: Timer.onTimer kann nicht zugewiesen werden

  Alt 9. Feb 2008, 13:23
Ja, es ist gezwungener maßen Lazarus... Borland Delphi gibts in der Schule nicht :-/ Wobei ich zuhause damit lieber Arbeite...

Also das was da oben steht ist die Komplette Unit. Und das @ vor dem Methodennamen hat anscheinend funktioniert! Es gibt keine Fehlermeldung mehr und das Programm wird ausgeführt. Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Timer.onTimer kann nicht zugewiesen werden

  Alt 9. Feb 2008, 13:52
ok, dann erwähne nächstes mal bitte gleich du lazarus verwendest Denn das vorranstellen des @ ist wohl eine Eigenart von Lazarus und in Delphi wird es ohne @ gemacht
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 07:54 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