AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

nonVCL Timer

Ein Thema von XXcD · begonnen am 29. Aug 2008 · letzter Beitrag vom 1. Sep 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#1

nonVCL Timer

  Alt 29. Aug 2008, 01:01
Hallo,
ich hatte vorhin gefragt wie ich eine TList fülle und jetzt habe ich schon wieder ein Problem das dann auch einzusetzen.

Ich müsste alle 30 Sekunden diese Liste aktualisieren, nun dachte ich mir nehme ich mal ein Timer, aber das ist nicht so einfach wie ich dachte.

Ich habe es erst so versucht:
Delphi-Quellcode:
procedure TSQL.reloadaccs(o: Tobject);
var ex: boolean;
    q: string;
    I:Integer;
    Account : TAccounts;
begin
SQL.ListAccounts:= TList.Create;
if assigned(SQL.FResult) then begin
    if SQL.FMysql.Status<>MYSQL_STATUS_READY then
      WriteLog('Ein Ergebnis wurde unvollständig gelesen!', true);
      FreeAndNil(SQL.FResult);
  end;
  q:='select * from user;';
  SQL.FResult := SQL.FMysql.query(q, true, ex);
  if ex then
  begin
    SQL.ListAccounts.Clear;
    SQL.FResult.First;
   for I := 0 to SQL.FResult.RowsCount - 1 do
   begin
    Account:= TAccounts.Create;
    Account.ID := strtoint(SQL.Fresult.FieldValuebyname('id'));
    SQL.ListAccounts.Add(Account);
   SQL.FResult.Next;
   end;
  end;
end;
...
  SQL.Timer:= TTimer.Create(nil);
  SQL.Timer.Interval:=30000;
  SQL.Timer.OnTimer := SQL.reloadaccs;
  SQL.Timer.Enabled:=true;
die Funktion reloadaccs wird aber garnicht ausgeührt, danach habe ich in der DP folgendes gefunden:
Delphi-Quellcode:
Type
    ToTimerHandler = class(Tobject)
        constructor create (nMs: integer);
        private
        FoT: Ttimer;
        procedure timerCall(o: Tobject);
        end;

Procedure ToTimerHandler.timerCall(o: Tobject);
Begin
    FoT.Enabled := True;
    writeln;
    writeln;
    write ('Test......');
    qDone := False;
End;

...
begin
ToTimerHandler.create(30000);
end.
Da wird der Code aber nur ausgeführt wenn ich das so habe:
Delphi-Quellcode:
...
begin
ToTimerHandler.create(30000);
while true do
begin
Application.Processmessage;
end;
end.
Dadurch wird aber der Rest des Programms nicht mehr weiter ausgefüht.
Wie könnte ich jetzt einfach einen Timer benutzen, der den Rest des Programms nicht blockiert?
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: nonVCL Timer

  Alt 29. Aug 2008, 09:32
Wenn der Timer-Event startet, könntest du einen Thread abfeuern, der die Arbeit in einem Kindprozess erledigt.

Zu Threads gibt es bei Delphi im Demo-Verzeichnis ein kleines Beispiel.
"Hey Süße,
hol mir mal was zu trinken! Du wirst schon wieder hässlich!"

Zitat eines Betrunkenen
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: nonVCL Timer

  Alt 29. Aug 2008, 10:45
Zitat:
nonVCL Timer
Und TStringlist, TTimer etc. gehören IMHO zur VCL.


Zitat von spaxxn:
Wenn der Timer-Event startet, könntest du einen Thread abfeuern, der die Arbeit in einem Kindprozess erledigt.

Zu Threads gibt es bei Delphi im Demo-Verzeichnis ein kleines Beispiel.
Ist wohl die beste Möglichkeit.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: nonVCL Timer

  Alt 29. Aug 2008, 10:54
Zitat von turboPASCAL:
Zitat:
nonVCL Timer
Und TStringlist, TTimer etc. gehören IMHO zur VCL.
Application.Processmessage; Damit ist dann 95% der VCL eingebunden
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#5

Re: nonVCL Timer

  Alt 29. Aug 2008, 11:10
"Hey Süße,
hol mir mal was zu trinken! Du wirst schon wieder hässlich!"

Zitat eines Betrunkenen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: nonVCL Timer

  Alt 29. Aug 2008, 11:32
Ich sehe nicht wo das etwa smit nonVCL zu tun hat. Es wird ja anscheinend ein Timer der SQL-Komponente benutzt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#7

Re: nonVCL Timer

  Alt 31. Aug 2008, 23:43
Kann mir bitte einer Code für einen Timer in der Console geben?
Ich versuche es jetzt schon seid tagen und komme einfach nicht weiter.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

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

Re: nonVCL Timer

  Alt 1. Sep 2008, 00:24
Das was du benutzt ist doch kein nonVCL! Du hast doch ne Komponente benutzt! Wenn du nur auf API-Funktionen zurückgreifen möchtest, dann schau dir die API-Tutorials von Luckie an! Die sollten dir dort weiter helfen..

Hier das Dokument von Ihm:

API-Tutorials

Und hier noch Sampels und andere Bsp.:

Samples
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#9

Re: nonVCL Timer

  Alt 1. Sep 2008, 01:06
nö funktioniert damit auch nicht.
Gib mir doch bitte einfach den richtigen Code um einen Timer in einem Konsolenprogramm zu verwenden.
Das was bei Luckie dabei ist, erzeugt ja ein Fenster und das ist ja wieder was ganz anderes.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#10

Re: nonVCL Timer

  Alt 1. Sep 2008, 08:11
In einer DLL habe ich das mal so realisiert:
.
http://msdn.microsoft.com/en-us/library/ms644906.aspx
.
Delphi-Quellcode:
procedure TimerProc(Wnd:HWnd;Msg,TimerID,dwTime:DWORD);stdcall;
Begin
//das, was regelmäßig geschehen soll
end;


SetTimer(0,0,1000,@TimerProc) //1000 msec
  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 05:14 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