Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Timer nur in einer Unit zur Laufzeit erzeugen ?? (https://www.delphipraxis.net/16596-timer-nur-einer-unit-zur-laufzeit-erzeugen.html)

hm988 19. Feb 2004 18:28


Timer nur in einer Unit zur Laufzeit erzeugen ??
 
hallo,

habt ihr zufällig ein Stück lauffähigen code wie ich einen Timer in eine Unit ohne Form einbauen kann,
ich hab schonmal einen Thread hier gefunden aber ich bekomm des nicht so richtig zum laufen.

oder hat einer ne Idee, des kann doch nit so schwer sein :wall: oder stelle ich mich zu dumm an :gruebel:

Danke für die Hilfe

Manzoni 19. Feb 2004 19:07

Re: Timer nur in einer Unit zur Laufzeit erzeugen ??
 
Delphi-Quellcode:
uses ExtCtrls;

procedure Timer;
var Timer : TTimer;
begin
  Timer:=TTimer.Create(nil);
  Timer.OnTimer:= ;//hier muss eine procedure in TNotify-Form stehen (z.B. Timer1Timer(Sender: TObject);)
  Timer.Interval:=1000;
  Timer.Enabled:=true;
end;
wie willst du ihn genau verdenden?

hm988 19. Feb 2004 20:20

Re: Timer nur in einer Unit zur Laufzeit erzeugen ??
 
sorry aber ich bekomm des nicht so ganz auf die Reihe mit der TNotify procedur,

bin noch nicht der hellste in Delphi, arbeite daran :coder: :roll:

ich habe einen Dienst (Windows Service) geschrieben, und der ist ohne Formular, ich brauche in dem Jetzt einen
Timer um die Zeit zu messen um später nach einer bestimmten Zeit das Formular anzuzeigen.

Treffnix 19. Feb 2004 22:29

Re: Timer nur in einer Unit zur Laufzeit erzeugen ??
 
wie Manzoni schon geschrieben hat, ist ein TNotify Event eine Prozedur mit einen TObject als Parameter.

Bsp.

Delphi-Quellcode:
Procedure TimerEvent( Sender: TObject );
Begin
  // Tuwasimmerduwillst
End;
und die weist du dann dem OnTimer-Event zu:
Delphi-Quellcode:
[..]//s. Manzoni
Timer.OnTimer:= TimerEvent;
[..]//s. Manzoni

hm988 19. Feb 2004 22:41

Re: Timer nur in einer Unit zur Laufzeit erzeugen ??
 
:wall: :wall: geht nicht :wall:

[Fehler] Unit1.pas(41): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'

Treffnix 19. Feb 2004 22:47

Re: Timer nur in einer Unit zur Laufzeit erzeugen ??
 
Zeig mal die Codestelle wos knallt! ( und ein bissl drumherum )

Synonym 19. Feb 2004 23:05

Re: Timer nur in einer Unit zur Laufzeit erzeugen ??
 
eigentlich ganz einfach...


du erstellst oben im Kopf deine Procedure

z.b so...

Delphi-Quellcode:
procedure lala(Sender:Tobject); //<--Wichtig
und dann schreibst du deine Procedure

z.B.


Delphi-Quellcode:
procedure Tform1.lala(Sender:Tobject);
begin
ShowMessage('jo geht');
end;
jetzt brauchst du bei onTimer nur noch lala als Procedure angeben!

Synonym

hm988 19. Feb 2004 23:08

Re: Timer nur in einer Unit zur Laufzeit erzeugen ??
 
also der Komplette Source

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TimerEvent(Sender: TObject);
begin
  form1.Caption := TimeToStr(Now);
end;


procedure Timer;
var Timer : TTimer;
begin
  Timer:=TTimer.Create(nil);
  Timer.OnTimer:=TimerEvent;//hier muss eine procedure in TNotify-Form stehen (z.B. Timer1Timer(Sender: TObject);)
  Timer.Interval:=1000;
  Timer.Enabled:=true;
end;

end.
irgendwie hab ich damit ein Prob, bitte kukt mal nach (für ganz dumme wie mich :oops: )

Danke

hm988 19. Feb 2004 23:12

Re: Timer nur in einer Unit zur Laufzeit erzeugen ??
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure TimerEvent(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
geht auch nicht [Fehler] Unit1.pas(36): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'
[Fehler] Unit1.pas(12): Ungenügende Forward- oder External-Deklaration: 'TForm1.TimerEvent'

Treffnix 19. Feb 2004 23:45

Re: Timer nur in einer Unit zur Laufzeit erzeugen ??
 
Also... Erstmal sollte der Prozedurkopf unter das Private.
Dann musst du die Prozedur Timerevent auch dem Objekt TForm1 zuordnen. Also unten
Delphi-Quellcode:
procedure TForm1.TimerEvent(Sender: TObject);
begin
  form1.Caption := TimeToStr(Now);
end;

procedure TForm1.Timer;
...
Dann am besten noch im Kopf aus der Procedure ein TNotifyEvent machen. Also:
Delphi-Quellcode:
...
private
TimerEvent: TNotifyEvent;
public
...
Aber hattest du nicht gesagt, du willst das ohne Form machen? TForm ist doch ein Formular...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr.
Seite 1 von 2  1 2      

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