AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Online-Update eines Programms..

Ein Thema von Angel4585 · begonnen am 5. Jul 2006 · letzter Beitrag vom 6. Jul 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#11

Re: Online-Update eines Programms..

  Alt 6. Jul 2006, 11:30
Mein Vorschlag für das Versionsabfragedings:

Delphi-Quellcode:
uses WinINet;

const
  AppVersion = '1.00';
  DllVersion = '1.01';
  DatVersion = '3.10';

  URL = 'http:\\www.MyPage.com\MyApps\MyAppVersion.vif';

function CopyFileFromURLToStream(const URL: string; MS: TMemoryStream): Boolean;
const
  BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[0..BufferSize - 1] of Char;
  BufferLength: DWORD;
begin
  hSession := InternetOpen(PChar(Application.Title),
    INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    Result := False;
    if Assigned(hSession) then
    begin

      hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0);
      try
        if Assigned(hURL) then
        begin
          MS.Position := 0;
          repeat
            InternetReadFile(hURL, @Buffer, BufferSize, BufferLength);
            MS.WriteBuffer(Buffer, BufferLength);
            { Application.ProcessMessages; }
          until BufferLength = 0;
          Result := True;
        end;

      finally
        InternetCloseHandle(hURL);
      end;
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;

function GetVerEntryString(MS: TMemoryStream; Key: String): String;
var
  i, p: Integer;
  sl: TStringList;
begin
  Result := '';

  if Assigned(MS) then
  begin
    sl := TStringList.Create;
    try
      sl.LoadFromStream(MS);
      for i := 0 to sl.Count - 1 do
      begin
        p := Pos(UpperCase(Key), UpperCase(sl.Strings[i]));
        if p > 0 then
        begin
          Result := Copy(sl.Strings[i], pos('=',sl.Strings[i])+1,
                      length(sl.Strings[i])-pos('=',sl.Strings[i]));
          break;
        end;
      end;
    finally
      sl.Free;
    end;
  end;
end;

procedure CheckOnlineFileUpdate;
var
  MemStream: TMemoryStream;
begin
  MemStream := TMemoryStream.Create;
  try
    CopyFileFromURLToStream(URL, MemStream);
    if Assigned(MemStream) then
    begin
      if GetVerEntryString(MemStream, 'MyAppVersion') = AppVersion then //...;
      if GetVerEntryString(MemStream, 'MyDllVersion') = DllVersion then //...;
      if GetVerEntryString(MemStream, 'MyDatVersion') = DatVersion then //...;
    end;

  finally
    MemStream.Free;
  end;
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 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