Czytanie wersjii z pliku

0

WItam, mam problem chciałbym aby mój program automatycznie czytał wersję z pliku .txt, np. jest wersja 0.1 i zmienia się na 0.2 więc pobiera jakieś pliki i po pobraniu już nie pobiera następny raz, chodzi mi oto żeby po zmienieniu wersjii pobierało pliki i aktualizowało.

0

1.Robisz kopię 'version.ini'.
2.Pobierasz z serwera plik 'version.ini'.
3.Sprawdzasz wersję.
4.Porównujesz wersje kopii 'version.ini' z aktualną 'version.ini', jeżeli nowa to pobierasz.
5.Usuwasz kopię 'version.ini'
(Ale to jest najprostszy sposób sprawdzania wersji...)

Cały kod będzie jakoś tak:

Function Wersja(Plik: String): Integer;
Var Ini: TIniFile;
Begin
 Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + Plik);
 Result := Ini.ReadInteger('Version', 'Ver', 0);
 Ini.Free;
End;

Procedure Aktualizuj;
Begin
 CopyFile('version.ini', 'temp.ini', False);
 {Pobierasz plik 'version.ini' z serwera}
 if Wersja('version.ini') > Wersja('temp.ini') Then Begin
  {Pobierasz nowe pliki z serwera}
 End;
 DeleteFile('temp.ini');
 {Potem tylko trzeba ponownie uruchomić aplikację}
End;

Z tym, że:
1.Wersja musi być liczbą całkowitą (1, 2, 3 itd.), nie może być liczbą zmiennoprzecinkową (0.1, 1.5, 9.0)
2.Jeżeli ktoś miał by wersję 1, a do pobrania byłaby wersja 5, to mogą być problemy, np.jeżeli zmienialiśmy w poprzednich wersjach ważne biblioteki, które są potrzebne do działania patcha 5. Trzeba by to jakoś poprawić, ale tym się sam zajmij.

0

Nie prościej zrobić to jak należy ?
W opcjach projektu masz dostępne ustawienia dot wersji, po co jakies zewnetrzene pliki ...

function GetAppVersion: string;
var
  Size, Size2: DWord;
  Pt, Pt2: Pointer;
begin
  Size := GetFileVersionInfoSize(PChar (ParamStr (0)), Size2);
  GetMem (Pt, Size);
  GetFileVersionInfo (PChar (ParamStr (0)), 0, Size, Pt);
  VerQueryValue (Pt, '\', Pt2, Size2);
  with TVSFixedFileInfo (Pt2^) do
  begin
    Result:=
    IntToStr (HiWord (dwFileVersionMS)) + '.' +
    IntToStr (LoWord (dwFileVersionMS)) + '.' +
    IntToStr (HiWord (dwFileVersionLS)) + '.' +
    IntToStr (LoWord (dwFileVersionLS));
  end;
  FreeMem (Pt);
end;
0

Napisałem, że mój sposób to

...najprostszy sposób sprawdzania wersji

Ten twój, jest już 'zaawansowniejszy' ;-P (jeżeli istnieje takie słowo)

0

Zgadzam się z Patryk27, maciejmt twoja wersja jest dla bardziej zaawansowanych. Użyję wersji od Patryk27.

Patryk27 po zrobieniu wszystkiego pojawia mi się błąd: [Error] patcher.pas(50): Undeclared identifier: 'TIniFile'

0

dodaj tinifiles do sekcji uses. Ale metoda maciejmt-a jest prawidłowsza.

0

tinifiles

Raczej dodaj IniFiles

0

Patryk27:

2.Pobierasz z serwera plik 'version.ini'. - Z jakiego serwera? pisz dokładniej

0

No chyba z tego na którym są aktualizacje.

0

chodzi mi oto że: ja chce aby z np moje komputera z jakiegoś folderu kopiowało pliki do tego gdzie jest ta aplikacja jeśli w version.ini jest 0.1 to pobiera np 1 plik i juz wiecej go nie pobiera ! a wy mi tu niewiem co piszecie

0

admix ile masz lat? co ty chcesz aktualizowac lokalnie?

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