HTTPGet, skąd pobrać?

0

Witam. Chciałbym zrobić update do programu ale nie wiem skąd pobrać. Szukałem w google z 2 godz. (Owszem, zanalazłem ale bez pliku .dcu (same .pas)). Proszę o link do HTTPGet razem z .dcu ponieważ jak instaluje z samym .pas to wyskakuje błąd że musi być .dcu. Proszę o pomoc.

Pozdrawiam.

0

Dlaczego nie użyjesz Indy ?

1

Przecież możesz zamienić .pas na .dcu
Nie pamiętam jak, ale chyba jak zrobisz nowy projekt albo dodasz do uses to może zamieni. Jakoś tak.

Pamiętam że jak zrobiłem sobie moduł z funkcjami, przeniosłem do Delphi7/Lib i dodałem do uses, to otrzymałem *.dcu. Więc tak się na pewno da, nie jestem pewny jak.

0

TomRiddle, dziękuje. Zrobiłem tak jak pisałeś i wszystko śmiga.

EDIT:

Teraz zrobiłem tam jak w temacie z Update i jak klikam button to wyskakuje błąd, usuwa się plik version.ini i wyłącza program. Program Update można pobrać z tego linku: redtube-rp.cba.pl/Update.exe

0

a kodu nawet nie podałeś...

0

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, HTTPGet, INIFiles;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    ProgressBar1: TProgressBar;
    HTTPGet1: THTTPGet;
    HTTPGet2: THTTPGet;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure HTTPGet1DoneFile(Sender: TObject; FileName: String;
      FileSize: Integer);
    procedure HTTPGet1Error(Sender: TObject);
    procedure HTTPGet2DoneFile(Sender: TObject; FileName: String;
      FileSize: Integer);
    procedure HTTPGet2Error(Sender: TObject);
    procedure HTTPGet2Progress(Sender: TObject; TotalSize,
      Readed: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  wersja = '1.0.7';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 HTTPGet1.URL := 'http://www.web-page.pl/version.ini';  //lokalizacja pliku z informacją
 HTTPGet1.FileName := ExtractFilePath(Application.ExeName) + 'version.ini'; 
 HTTPGet1.GetFile;  //pobranie pliku ini
 Memo1.Lines.Add('Pobieranie informacji...');
end;

procedure TForm1.HTTPGet1DoneFile(Sender: TObject; FileName: String;
  FileSize: Integer);
var
 INI : TINIFile;
 updtVersion : string;
 cyfra1 : integer;
 cyfra2 : integer;
 updtCyfr1 : integer;
 updtCyfr2 : integer;
begin
 Memo1.Lines.Add('Sprawdzanie, czy jest nowa wersja...');
 INI := TINIFile.Create(HTTPGet1.FileName);
 try
   updtVersion := INI.ReadString('update','version','');  //odczytanie wersji z pliku ini

   //nie śmiejcie sie z tego sposobu. To tylko przykład :)
   cyfra1 := StrToInt(wersja[1]);
   cyfra2 := StrToInt(wersja[3]);
   updtCyfr1 := StrToInt(updtVersion[1]);
   updtCyfr2 := StrToInt(updtVersion[3]);
   if (cyfra1 < updtCyfr1) or (cyfra2 < updtCyfr2) then  //sprawdzenie, czy jest nowa wersja
   begin
     Memo1.Lines.Add('Jest nowa wersja programu!');

{wyświetlenie zapytania. Jeśli użytkownik wybierze Tak, rozpoczyna się pobieranie programu }
     if Application.MessageBox('Czy chcesz pobrać nową wersję programu?','Informacja',MB_YesNo) =
      ID_NO then
      exit
     else
      begin
       HTTPGet2.URL := INI.ReadString('update','url','');
       if SaveDialog1.Execute then  // tu użytkownik wybierze, gdzie zapisać program
         HTTPGet2.FileName := SaveDialog1.FileName;  
       HTTPGet2.GetFile;  //pobieranie pliku
       Memo1.Lines.Add('Pobieranie pliku...');
      end;
   end
   else
      Memo1.Lines.Add('Nie znaleziono nowej wersji programu!');
 finally
   INI.Free;
   DeleteFile(HTTPGet1.FileName); //usunięcie pliku ini
 end;
end;

procedure TForm1.HTTPGet1Error(Sender: TObject);
begin
Memo1.Lines.Add('Wystąpił błąd!');
end;

procedure TForm1.HTTPGet2DoneFile(Sender: TObject; FileName: String;
  FileSize: Integer);
begin
Memo1.Lines.Add('Pobieranie zakończone sukcesem!');
end;

procedure TForm1.HTTPGet2Error(Sender: TObject);
begin
Memo1.Lines.Add('Wystąpił błąd podczas pobierania pliku!');
end;

procedure TForm1.HTTPGet2Progress(Sender: TObject; TotalSize,
  Readed: Integer);
begin
ProgressBar1.Max := TotalSize;
ProgressBar1.Position := Readed;
end;

end.

Edit:
Znalazłem błąd, nie dałem adresu url.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0