Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer, blicke nicht durch *revision* (https://www.delphipraxis.net/103661-timer-blicke-nicht-durch-%2Arevision%2A.html)

motivierter 19. Nov 2007 13:59


Timer, blicke nicht durch *revision*
 
Hallo,


ich habe eine SChleife wo ich warte bis eine Webseite geladen ist. Den Status prüfe ich mit READY_STATE, wenn er jedoch länger als 15 Sekunden lädt möchte ich dass der Browser die Seite neu öffnet. Wie realisiere ich das?


Gruß

Aurelius 19. Nov 2007 14:03

Re: Timer, blicke nicht durch
 
Mach das ganze mit nem Timer, in etwa so(Pseudocode):
[delphi]Timer.Intervall = 1000

procedure Timer;
begin
if Ready_State ...//hier deine Abfrage ob er noch lädt
then Timer1.Tag + 1;
if Timer1.Tag = 15 then
begin
Refresh; //Seite neu laden
Timer1.Tag = 0;
end;
end;

Brainshock 19. Nov 2007 14:59

Re: Timer, blicke nicht durch
 
Delphi-Quellcode:
tmReadyTimer.Interval = 15000

TMyForm.tmReadyTimer(Sender: TObject);
begin
  if not READY_STATE then
    // hier das Browser.Reload rein
end;

TMyForm.ButtonClick(Sender: TObject);
begin
  tmReadyTimer.Enabled:= True;
  // Browserseite laden aufrufen
  tmReadyTimer.Enabled:= False;
end;
Probiers mal so, ist einfacher als die Idee von xX0815Xx.

Gruß,

motivierter 19. Nov 2007 15:48

Re: Timer, blicke nicht durch
 
Danke euch. Kann ich auch sagen wenn Timer1 bei 15 sekunden angekommen ist dann inc(x) und x ist die zählvariable von while?

motivierter 19. Nov 2007 17:39

Re: Timer, blicke nicht durch
 
Also zum Beispiel:

Delphi-Quellcode:
while(x<=10)do
begin
EmbeddedWb1.go(url);
EmbeddedWb2.go(url);

 while embeddedwb1.ReadyState <> READYSTATE_COMPLETE do
  begin
    Application.ProcessMessages;

  end;
         while embeddedwb2.ReadyState <> READYSTATE_COMPLETE do
  begin
    Application.ProcessMessages;

  end;


inc(x);


end;
So wenn eine Seite nicht laden sollte, wie kann ich an der Stelle jetzt ein Timer einbauen der nach 15-20 Sekunden die Schlei neu ausführt????

motivierter 19. Nov 2007 18:03

Re: Timer, blicke nicht durch *revision*
 
BItte helft mir... :oops:

DeddyH 19. Nov 2007 18:15

Re: Timer, blicke nicht durch *revision*
 
Ehrlich gesagt habe ich das Problem noch nicht ganz verstanden. Du willst in einem Webbrowser eine Seite aufrufen und, wenn diese nicht nach 15 Sekunden vollständig geladen ist, einen Refresh durchführen?

motivierter 19. Nov 2007 19:37

Re: Timer, blicke nicht durch *revision*
 
jo ! aber die ganze schleife soll neu durchlaufen werdne!

LoCrux 20. Nov 2007 08:48

Re: Timer, blicke nicht durch *revision*
 
I hope I got you right....

ich kenne zwar die Komponente nicht, aber...

maybe helps...

Delphi-Quellcode:
procedure TYourClass.FireEmUp;
begin
  EmbeddedWb1.go(url);
  EmbeddedWb2.go(url);
  FYourCounter := 0;
end;

function TYourClass.CheckState(const browser:TEmbeddedWB):Boolean;
begin
  result := (browser.ReadyState <> READYSTATE_COMPLETE);
end;

procedure TYourClass.YorTimer(Sender: TObject);
begin
  if (CheckState(EmbeddedWb1) or CheckState(EmbeddedWb2))
  then begin
    inc(FYourCounter);
    if (FYourCounter>15)
       then FireEmUp;
  end
  else YorTimer.Enabled := False;
end;

.
.
YourTimer.Interval := 1000;
FireEmUp;                   //[edit] Zeilentausch [/edit]
YorTimer.Enabled := True;   //[edit]  -- " --    [/edit]
While (YorTimer.Enabled)
do begin
  Application.ProcessMessages;
  // Was noch so ansteht
end;
.
.
ABER !!! Es besteht die Gefahr, dass Du niemehr aus der While-Schleife kommst (z.B. keine Internetverbindung)...

.. such nach was stilitisch schoenerem...

DeddyH 20. Nov 2007 10:24

Re: Timer, blicke nicht durch *revision*
 
Zitat:

Zitat von LoCrux
ABER !!! Es besteht die Gefahr, dass Du niemehr aus der While-Schleife kommst (z.B. keine Internetverbindung)...

Genau. Das Mindeste wäre z.B. eine Variable "Versuche", die beim Schleifendurchlauf erhöht wird. Wenn 3 erfolglose Versuche, dann eben nicht (so in der Art).


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