Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTML Datei im Hintergrund runterladen (https://www.delphipraxis.net/119964-html-datei-im-hintergrund-runterladen.html)

Magier 3. Sep 2008 20:16


HTML Datei im Hintergrund runterladen
 
Hey ho,

ich habe folgendes Problem:

Ich versuche in mein Programm eine Funktion einzubauen die übers Inet checkt ob das die aktuelle Version ist.
Das mache ich indem ich mit diesem Script: eine datei von meinem Server runterlade wo die Versionsnr drin ist und dann wird verglichen.

Das Problem ist nur das wenn ich die Datei runterlade hängt das Programm, vor allem wenn der nicht im Internet ist, ist das sehr ärgerlich, denn dann hängt das Programm gut 15 sekunden.

Hat jemand ne Idee wie man das im Hintergrund laufen lassen kann?

MFG
Nick

mkinzler 3. Sep 2008 20:18

Re: HTML Datei im Hintergrund runterladen
 
In einem separaten Thread

Meflin 3. Sep 2008 20:28

Re: HTML Datei im Hintergrund runterladen
 
Oder du machst es gleich "richtig" und baust einen Web-Updater ein. Der müsste dann sinnvollerweise sowieso in einem eigenen Prozess laufen, damit er die Anwendung updaten kann - da würde sich dann auch nichts aufhängen ;)

Magier 3. Sep 2008 23:02

Re: HTML Datei im Hintergrund runterladen
 
danke für die schnellen Antworten.

Sowas wie ein eigenen Thread zu machen habe ich mir auch gedacht, nur wusste ich nicht wie das heißt (geschweige denn funktioniert).

Ich hab das ganze aber mit einem Tutorial auf die reihe bkommen und es funktioniert. Aber ich habe noch ein wenig das gefühl dass es ziemlich unschön gemacht wurde.

das hier ist die Procedure in dem anderen Thread wo die Datei aus dem Inet abgerufen wird. Allerdings werden da dann auch in der Form1 die Komponenten angesprochen und je nach Version eingefärbt und beschriftet. Weil in der Procedure in der Unit1 diese Sachen aus dem thread auszuwerten geht ja nicht, da das ja heißen würde dass das Programm wieder hängt. Wäre es eine Idee in der Unit 1 eine Procedure zu machen dass das Ergebnis aus dem Thread verarbeitet? ich hoffe ihr versteht mich.

ach und ist das mit self.free am ende eine schöne sache? weil irgendwie muss ich den thread ja wieder freigeben aber ich wusste keine bessere stelle.
Delphi-Quellcode:
procedure TUpdateThread.Execute;
var
  get_version: string;
begin
  //auf Updates checken
  try
    get_version :=
      GetHTML(adresse);
  except
  end;
  if get_version = 'nichterreichbar' then
  begin
    form1.panel2.Color := clBtnFace;
    form1.panel2.Caption := 'Der Server ist nicht erreichbar';
    form1.panel2.Cursor := crdefault;
  end
  else if get_version = version then
  begin
    form1.panel2.Color := $002CF321;
    form1.panel2.Caption := 'EasyLanguage ist auf dem neusten Stand';
    form1.panel2.Cursor := crdefault;
  end
  else
  begin
    form1.panel2.Color := $005B5BEA;
    form1.panel2.Caption := 'Aktuelle Version: ' + get_version;
    form1.panel2.Cursor := crhandpoint;
    if MessageDlg('Es ist eine neue Version von EasyLanguage verfügbar.'+#10#13+'Möchten Sie jetzt die Internet Seite aufrufen um die neue Version herunterzuladen?', mtConfirmation,
      [mbYes, mbNo], 0) = idYes then
            ShellExecute(Application.Handle, 'open',
      PChar('http://www.manzanaloca.de/easylanguage/'),
      nil,
      nil, sw_ShowNormal);
  end;
  self.Free;
end;
viele grüße
magier


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