Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

jedno pitanje oko.. :)

[es] :: Pascal / Delphi / Kylix :: jedno pitanje oko.. :)

[ Pregleda: 1530 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dementia
Nemanja Filipovic

Član broj: 140639
Poruke: 22
*.dynamic.sbb.rs.



+1 Profil

icon jedno pitanje oko.. :)01.12.2009. u 11:32 - pre 175 meseci
Code:

procedure update;
begin
  if DownloadFile(MyURL, GetMyDir + 'text.txt') then
  begin
      if FileExists(GetMyDir + 'text.txt')then read_file;
  end
  else
    ShowMessage('An error occurred.')
end;




Server mi cesto trokira nesto, i onda kada se pozove ova funkcija iz mog programa, program totalno zablokira, jer ne moze da preuzme fajl kada server pocne da zeza... i tek posle 20-ak sekundi prikaze ShowMessage('An error occurred.'). -Prikazuje odmah ovu poruku ako je server totalno off...

Kako da uradim neki tajmer recimo da ako nema odgovora za 4 sekunde, da prikaze poruku ShowMessage('An error occurred.')

Ako moze neki primer koda bio bih puno zahvalan!

Poz.

[Ovu poruku je menjao Dementia dana 01.12.2009. u 13:21 GMT+1]
 
Odgovor na temu

Vic
Error974
BI&SE
Beograd

Član broj: 16118
Poruke: 396
*.imlek.co.yu.



+49 Profil

icon Re: jedno pitanje oko tajmera..? :)01.12.2009. u 11:41 - pre 175 meseci
Koristi try/except funckiju i u okviru nje dodaj da se uključi timer (timer1.enabled:=true)
ERROR974
 
Odgovor na temu

Dementia
Nemanja Filipovic

Član broj: 140639
Poruke: 22
*.sbb.rs.



+1 Profil

icon Re: jedno pitanje... :)01.12.2009. u 12:21 - pre 175 meseci
Vec koristim try/except

ovo se poziva

function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
except
Result := False;
end;
end;


Ne bih da koristim tajmere (pogresno sam nazvao temu, sad cu da ispravim :) ), vec planiram GetTickCount, ali ne znam kako bih to mogao da izvedem...
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: jedno pitanje oko.. :)01.12.2009. u 14:02 - pre 175 meseci
> Kako da uradim neki tajmer recimo da ako nema odgovora za 4 sekunde, da prikaze poruku ShowMessage('An error occurred.')
> if DownloadFile(MyURL, GetMyDir + 'text.txt') then

Pozivaš funkciju u blokirajućem obliku (tek kada se završi vraća e kontrola programu), možeš je ili koristiti u neblokirajućem (asinhronom) prosleđivanjem i poslednjeg callback parametra, prebacivanjem downloada u poseban thread ili upotrebom drugih biblioteka za download koji dopuštaju i timeout (npr, Indy, Synapse...)

 
Odgovor na temu

Dementia
Nemanja Filipovic

Član broj: 140639
Poruke: 22
*.sbb.rs.



+1 Profil

icon Re: jedno pitanje oko..01.12.2009. u 18:06 - pre 175 meseci
Pa i sa threadom korisnik ima da ceka pola minuta(tj dok mi server trokira, tj radi JAKO usporeno preko dana) dok dobije odgovor, doduse program nece da zablokira, ali korisnik nece isto brzo dobiti odgovor da server nije dostupan... ovo moze da se resi iz jedne do dve linije koda, proveravanjem proteklog vremena, ako npr za 4 sekunde nema odgovora od servera, bez ikakvih threadova, ali ne znam kako to da izvedem...


Potrazicu odgovor na drugom forumu, hvala u svakom slucaju.
Poz
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: jedno pitanje oko.. :)

[ Pregleda: 1530 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.