Update se servru – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Update se servru – Delphi – Fórum – Programujte.comUpdate se servru – Delphi – Fórum – Programujte.com

 

Borisek0
Stálý člen
4. 7. 2012   #1
-
0
-

Zdravím.

Když jsem začal psat muj program měl jen par kb a bylo vše ok.

Aktualizace stahuji se servru.

If HTTPMethod('GET', 'http://xx.xx.xx.xx/mujprogram.exe') then
                                                        if ResultCode = 200 then
                                                                               begin
                                                                                Document.SaveToFile('.\mujprogram.exe')
                                                                                TS := Headers;
                                                                               end;

Dnes už je muj program 7 MB obluda a při stahovani se program vždy na dtu dobu než se soubor stahne se servru sekne.

Jak na to,jine řešení než to nacpat do vlakna.

Nahlásit jako SPAM
IP: 213.195.237.–
nobody
~ Anonymní uživatel
22 příspěvků
4. 7. 2012   #2
-
0
-

Je nejaky racionalni duvod to nedavat do vlakna? Muzes to forknout a pak jen overit, jestli uz je cely nebo rozdelit program na dva.

Nahlásit jako SPAM
IP: 2a02:598:7001:101:5e26:af...–
yetty
~ Redaktor
+5
Super člen
5. 7. 2012   #3
-
0
-
Nahlásit jako SPAM
IP: 90.180.203.–
Borisek0
Stálý člen
5. 7. 2012   #4
-
0
-

No mi nevadi že chvili trva to stahovaní.

Mi vadi že když se to stahuje a kliknu na form, začne kurzor myši točit a na liště vyskoči že program neodpovida.

Mi by stačilo aby se zobrazila zprava přes ShowMessage.

Čekej,stahuji aktuakizace a po stažení se sama ukončila.

A nějak ošetřit to "kurzor myši točit a na liště vyskoči že program neodpovida"

Nahlásit jako SPAM
IP: 81.30.255.–
liborb
~ Redaktor
+18
Guru
5. 7. 2012   #5
-
0
-

Tak toho se zbavíš jedině tak, že to stahování nebude v hlavním vláknu, kde je i smyčka zpráv. Systém napíše, že program neodpovídá právě z toho důvodu, že mu pošle zprávu, kterou tvůj program nemůže vyřídit neb je "zablokovaný" stahováním. Předělat stahování do vlákna je otázka asi tak 5 řádků kódu navíc, nic dalšího řešit nemusíš, tak to půjde snadno.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.217.–
Fala0
Duch
7. 7. 2012   #6
-
0
-

Začátečníci používají Application.ProcessMessages, který vložíš do nějaké události, která třeba dělá teploměr.

Nahlásit jako SPAM
IP: 89.102.173.–
Jan Fiala MG-Ware s.r.o.
Borisek0
Stálý člen
10. 7. 2012   #7
-
0
-

Moh by ste mi lepa vysvětlit to

"který vložíš do nějaké události, která třeba dělá teploměr."

Application.ProcessMessages jsem už zkoušel nacpat do te procedury co je nahoře a nic.

Cpat to do vlakna mi nepřipada moc rozumne.

Stejnak by muselo to hlavní vlakno čekat, zda se to v tom vlaknu stahne.

Nahlásit jako SPAM
IP: 81.30.255.–
liborb
~ Redaktor
+18
Guru
10. 7. 2012   #8
-
0
-

Teploměrem myslí ProgressBar, ale fungovalo by to jedině, kdyby si měl od toho HTTPMethod nechat si volat nějaký callback, kde by si vyřizoval zprávy chodící oknu (nahradil hlavní smyčku zpráv). Pokud taková možnost je, tak to fungovat bude, jinak máš smůlu :).

No a co se ti nelíbí na vláknu? Vlákna jsou super :) ... tady je malý příklad.

Nahlásit jako SPAM
IP: 78.80.52.–
Fala0
Duch
10. 7. 2012   #9
-
0
-

#7 Borisek
program Project2;

    2{$APPTYPE CONSOLE}
    3uses
    4  SysUtils, httpsend, Classes, blcksock;
    5
    6var
    7  sl: TStringList;
    8
    9type
   10  TStatusWriter = class
   11  private
   12    fiProgress: Int64;
   13    foHttp: THTTPSend;
   14  public
   15    constructor Create(HTTP: THTTPSend);
   16    procedure Status (Sender: TObject; Reason: THookSocketReason;
   17      const Value: String);
   18  end;
   19
   20constructor TStatusWriter.Create(HTTP: THTTPSend);
   21begin
   22  foHttp := HTTP;
   23end;
   24
   25procedure TStatusWriter.Status (Sender: TObject; Reason: THookSocketReason;
   26  const Value: String);
   27begin
   28  case Reason of
   29    HR_Connect:
   30     writeln('Connect!');
   31    HR_SocketClose:
   32     writeln('Close!');
   33
   34    HR_SocketCreate:
   35       fiProgress := 0;
   36    HR_ReadCount:
   37    begin
   38       inc(fiProgress, StrToIntDef(Value, 0));
   39       writeln('Read:', fiProgress);
   40       writeln('Size:', foHttp.Downloadsize);

Application.ProcessMessages;


   41    end;
   42  end;
   43end;
   44
   45
   46function bHttpGetText(const URL: string; const Response: TStrings): Boolean;
   47var
   48  HTTP: THTTPSend;
   49  oWriter: TStatusWriter;
   50begin
   51  HTTP := THTTPSend.Create;
   52  oWriter := TStatusWriter.Create(HTTP);
   53  try
   54{    HTTP.ProxyHost := 'host';
   55    HTTP.ProxyPass := 'password';
   56    HTTP.ProxyPort := port;
   57    HTTP.ProxyUser := 'user'}
   58    HTTP.Protocol := '1.1';
   59//    HTTP.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.6) Gecko/20050321 Firefox/1.0.2';
   60
   61    HTTP.Sock.OnStatus := oWriter.Status;
   62    Result := HTTP.HTTPMethod('GET', URL);
   63    if Result then
   64      Response.LoadFromStream(HTTP.Document);
   65  finally
   66    HTTP.Free;
   67    oWriter.Free;
   68  end;
   69end;
   70
   71
   72begin
   73  sl := TStringList.Create;
   74  try
   75{    HttpGetText('http://www.google.cz/', sl);
   76    writeln(sl.Text);  }
   77
   78    bHttpGetText('http://www.idnes.cz/', sl);
   79//    writeln(sl.Text);
   80    writeln('Delka:'+IntToStr(Length(sl.Text)));
   81
   82
   83  finally
   84    FreeAndNil(sl);
   85  end;
   86end.

Nahlásit jako SPAM
IP: 178.20.137.–
Jan Fiala MG-Ware s.r.o.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

Jméno servru — založil Borek

UPDATE databazy — založil tomi86

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý