Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi label.caption alle 0,5sec refreshen lassen ? (https://www.delphipraxis.net/141674-label-caption-alle-0-5sec-refreshen-lassen.html)

noo.bee 13. Okt 2009 21:08


label.caption alle 0,5sec refreshen lassen ?
 
ich lasse mir von einer webseite mittels pos uns posex einen gewissen text in einem label wiedergeben. dieser ändert sich jedoch kontinuierlich.
jetzt gibt es zwar die möglichkeit, mit label3.refresh zu aktualisieren, jedoch geschieht dies dann nur 1x.
gibts ne möglichkeit, dieses im extremfall alle 0,5 sec wiederholen zu lassen ?

Daniel 13. Okt 2009 21:14

Re: label.caption alle 0,5sec refreshen lassen ?
 
Mittels der Komponente TTimer kannst Du alle X Millisekunden ein Event generieren, in dem Du dann das Label aktualisieren kannst. Der Vollständigkeit halber sei nur erwähnt, dass Du Dich bei Windows so ohne Weiteres nicht auf exakte Zeitintervalle verlassen kannst, da es kein Echtzeitbetriebssystem ist. Es wird also darauf hinauslaufen, dass Du "etwa" alle halbe Sekunde einen Refresh bekommen wirst.

Hobby-Programmierer 13. Okt 2009 21:19

Re: label.caption alle 0,5sec refreshen lassen ?
 
Warum aktualisierst Du das Label nicht gleich wenn die Daten von der Website gelesen werden und sich geändert haben?

noo.bee 13. Okt 2009 21:21

Re: label.caption alle 0,5sec refreshen lassen ?
 
wenn ich mich einlogge, werden die daten in label5.caption ja aktualisiert. bin ich dann aber 5 minuten online, sind die daten in label5.caption bereits alt und nutzlos.
somit muss ich alle paar sekunden aktualisieren lassen um ständig die aktuellen daten zu sehen

Hobby-Programmierer 13. Okt 2009 21:30

Re: label.caption alle 0,5sec refreshen lassen ?
 
Das ist schon klar, nur kannst Du das Label refreshen sooft Du willst - wenn sich der Inhalt net ändert kann auch nix anderes angezeigt werden.
Du musst natürlich den Inhalt der Website lesen und dann dem Label zuweisen, dann hat sich das mit dem refresh erledigt. Allerdings halte ich nix davon alle 0,5s von einer Seite die Daten zu holen - vielleicht alle 30 s.

[Edit] Du hast ja sicher schon eine Prozedur\Funktion zum einlesen der Daten. Diese kannst Du dann wie Daniel bereits sagte Timergesteuert aufrufen.

himitsu 13. Okt 2009 21:34

Re: label.caption alle 0,5sec refreshen lassen ?
 
Zitat:

Zitat von noo.bee
jetzt gibt es zwar die möglichkeit, mit label3.refresh ...

Wenn man einem Label einen neuen Text zuweißt, dann sollte sich dieses bei nächster Gelegenheit eigentlich selber refreschen.

Bzw. nur durch Label3.Refresh wird sich doch der Text nicht ändern? :gruebel:

Zitat:

Zitat von noo.bee
dieses im extremfall alle 0,5 sec wiederholen zu lassen ?

Du willst also alle 0,5 Sekunden die Webseite downloaden ... erlaubt das denn überhaupt der Webseitenbetreiber?
Da dieses doch schon etwas Traffic verursacht.

Sir Rufo 13. Okt 2009 21:41

Re: label.caption alle 0,5sec refreshen lassen ?
 
Die Abfrage der Website (bei dem kurzen Intervall) würde ich auch über einen Thread realisieren.
Wenn die Abfrage mal länger dauert, dann blockierst Du nicht dein ganzes Programm.

Den Refresh des Labels erledigst Du dann entweder über einen Timer der die Daten vom Thread abholt (als Hinweis sei dazu TCriticalSection genannt) oder du lässt deinen Thread einen Event (mit Syncronize) feuern, natürlich nur, wenn wirklich neue Informationen vorliegen, und darüber dein Label füllen, welches damit automatisch refresht wird.

Die Event-Steuerung ist etwas aufwändiger aber auch schonender bei den Ressourcen, da ein Neuzeichnen des Labels nur bei einer wirklichen Änderung erfolgt.

cu

Oliver

Zitat:

Zitat von himitsu
Du willst also alle 0,5 Sekunden die Webseite downloaden ... erlaubt das denn überhaupt der Webseitenbetreiber?
Da dieses doch schon etwas Traffic verursacht.

Kann ja auch seine eigene Seite sein, die er überwachen möchte, however. Aber auch im Internet ist Rücksichtnahme nicht fehl am Platz

noo.bee 13. Okt 2009 21:45

Re: label.caption alle 0,5sec refreshen lassen ?
 
naja ihr habt schon recht... der refresh ist ja immo nur alle 30 sek ;) und es müssen keine genauen 30sek sein ;)

Zitat:

Du hast ja sicher schon eine Prozedur\Funktion zum einlesen der Daten. Diese kannst Du dann wie Daniel bereits sagte Timergesteuert aufrufen.
japp, hab die procedure in den ttimer eingebuden und lasse es alle 30 sek abrufen :thumb: schien mir am einfachsten zu realiseren :stupid: :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 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