![]() |
Versionsabfrage über's Internet mittels Thread
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
SittingDuck hat ![]() Unit für die Verwendung von Internetfunktionen einbinden:
Delphi-Quellcode:
Das Thread Objekt:
uses WinInet;
Delphi-Quellcode:
Funktion, die die Datei auf dem Server ausliest:
type
TGetRemoteVersionThread = class(TThread) private procedure UpdateCaption; protected procedure Execute; override; public CurrentVersionStr, RemoteVersion: string; //FileVersion, RemoteVersion end;
Delphi-Quellcode:
Funktion zum Anzeigen der Versionen und des Status (neuere Version vorhanden):
function LoadURL(URL: String): String;
var IOpen, IURL: HINTERNET; Read: Cardinal; Msg: array[0..4096] of Char; begin Result := ''; IOpen := InternetOpen('GetIP', INTERNET_OPEN_TYPE_PRECONFIG, '', '', INTERNET_FLAG_NEED_FILE); if IOpen <> nil then try IURL := InternetOpenUrl(IOpen, PAnsiChar(URL), nil, 0, INTERNET_FLAG_NO_UI or INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_RELOAD, 0); if IURL <> nil then try repeat FillChar(Msg, SizeOf(Msg), 0); if InternetReadFile(IURL, @Msg[0], Pred(SizeOf(Msg)), Read) then Result := Result + Msg else Break; until Read = 0; finally InternetCloseHandle(IURL); end; finally InternetCloseHandle(IOpen); end; end;
Delphi-Quellcode:
Prozedur "Execute" des Threads:
procedure TGetRemoteVersionThread.UpdateCaption;
begin with Form1 do begin // Could not get data if RemoteVersion = '' then begin LblVersionStatus.Caption := 'An error occured.' + #13#10 + 'Note: ' + 'You must be connected to the internet'; end else if RemoteVersion = CurrentVersionStr then LblVersionStatus.Caption := 'You have the newest version installed' else LblVersionStatus.Caption := 'A newer version is available.'; LblCurrentVer.Caption := CurrentVersionStr; LblOnlineVer.Caption := RemoteVersion; end; end;
Delphi-Quellcode:
Das Starten des Threads geht's folgendermaßen:
procedure TGetRemoteVersionThread.Execute;
const BaseURL = 'http://www.domain.de/'; VersionFile = 'version.txt'; begin try if InternetGetConnectedState(nil, 0) then begin RemoteVersion := LoadURL(BaseURL + VersionFile); // get current version CurrentVersionStr := GetVersion; Synchronize(UpdateCaption); end; except end; end;
Delphi-Quellcode:
Damit es eswas anschaulicher ist, habe ich dazu eine kleine Demo geschrieben, die sich im Anhang befindet.
var
Thread: TGetRemoteVersionThread; // ... Thread := TGetRemoteVersionThread.Create(True); Thread.FreeOnTerminate := True; Thread.Resume; |
Re: Versionsabfrage über's Internet mittels Thread
Und weil ich auch noch meinen Senf dazugeben will... Meine TInternetUpdate Komponente macht ziemlich genau das Gleiche, nur bereits praktisch in eine VCL Komponente gepackt...
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 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