Und was ist das bei dir:
Delphi-Quellcode:
type
TMyTimerHelpClass = class(TObject)
public
procedure MyTimerSub(Sender : TObject);
end;
Heißt auch noch bei dir TmyTimer
helpClass.

Und warum jetzt nicht noch den Timer gleich mit reinpacken?
Aber wenn man es ganz ohne Klasse machen will... Hier mal ein Timer in einem Konsolenprogramm:
Delphi-Quellcode:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,
ExtCtrls,
Classes;
type
PMethodPointer = ^TMethodPointer;
TMethodPointer = packed record
pMethod: Pointer;
pObject: TObject;
end;
var
T: TTimer;
p: TMethodPointer;
i: Integer;
procedure NotifyEvent(Self: TMethodPointer; Sender: TObject);
begin
writeln('yes');
beep;
end;
begin
T := TTimer.Create(nil);
T.Interval := 200; // -> löst alle 200 ms das OnTimer-Event aus
try
p.pMethod := @NotifyEvent;
p.pObject := nil;
T.OnTimer := TNotifyEvent(p);
T.Enabled := true; // aktiviert den Timer
writeln('Warte auf Event: ');
for i := 1 to 5 do begin
sleep(500);
writeln('warte ' + inttostr(i*500) + 'ms...');
NotifyEvent(p, T);
end;
T.Enabled := false; // deaktiviert den Timer
finally
T.Free;
end;
end.
Edit: Source korrigiert.