![]() |
Timer.onTimer kann nicht zugewiesen werden
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:
Delphi-Quellcode:
Ich kann den Timer nicht per Objekt Inspector einfügen und die Methode so zuweisen, da kein Frame in der Unit/Klasse exsistiert ;)
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 wäre über Hilfe sehr dankbar :) |
Re: Timer.onTimer kann nicht zugewiesen werden
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; |
Re: Timer.onTimer kann nicht zugewiesen werden
Hast du es schon mit einem @ vor dem Methodennamen versucht? Und es ist sicher falsch, einen Parameter anzugeben (nil).
|
Re: Timer.onTimer kann nicht zugewiesen werden
Zitat:
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? |
Re: Timer.onTimer kann nicht zugewiesen werden
Das dürfte Lazarus sein ;)
|
Re: Timer.onTimer kann nicht zugewiesen werden
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 :) |
Re: Timer.onTimer kann nicht zugewiesen werden
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
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 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