ďťż

Ładny brzuch

Napisałem prosty instalator w BCB6, który wypakowuje wszystkie pliki z pliku .exe instalatora. Chciałem trochę to uatrakcyjnić poprzez dodanie na forme ProgressBara, który pokazywałby aktualny postęp instalacji (tak jak we wszystkich instalatorach). Zastanawiam się tylko na jakiej zasadzie miałoby odbywać się sprawdzanie postępu instalacji. Na początku chciałem zrobić tak: liczba_plikow_skopiowanych / liczba_wszystkich_plikow * 100%, ale nie jest to dobre rozwiązanie bo wtedy pliki o różnych wielkościach będą traktowane tak samo (np. po skopiowaniu pliku o rozmiarze 2 kb progressbar przesunie sie o tyle samo co przy pliku o rozmiarze 200 mb).
Najlepszym rozwiązaniem byłoby więc sprawdzenie, ile KB danego pliku już przekopiowano, dodanie tego do jakiejś zmiennej zliczającej łączną ilość skopiowanych danych i dzielenie przez rozmiar wszystkich plików.
Tu pojawiają się moje pytanie: Czy rzeczywiście to najlepsze rozwiązanie? A jak tak, to w jaki sposób sprawdzać na bieżąco rozmiar kopiowanego pliku?
Pomóżcie ;)



owszem, najlepiej sprawdzic rozmiar kopiowanego pliku oraz ile juz przekopiowano.
ale nie powiem ci jak to zrobic, bo nie podales jaka metoda kopiujesz ... :]

Pliki wypakowuje za pomoca takiej funkcji:

void __fastcall ExtractFile(unsigned short ID, AnsiString FileName) { HRSRC Res = FindResource(HInstance, MAKEINTRESOURCE(ID), RT_RCDATA); if(!Res) { Application->MessageBox("Nie znaleziono zasobu!", "Błąd", MB_OK); return; } DWORD Size = SizeofResource(HInstance, Res); HGLOBAL MemoryHandle = LoadResource(HInstance, Res); if (MemoryHandle == NULL) return; BYTE *MemPtr = (BYTE *)LockResource(MemoryHandle); std::auto_ptr<TMemoryStream>stream(new TMemoryStream); stream->Write(MemPtr, Size); stream->Position = 0; stream->SaveToFile(FileName); } // Użycie: ExtractFile(ID_1, "C:\\plik1.ext");

Identyfikatory plików zapisałem w pliku Program.rc, który potem skompilowałem do pliku Program.res i dołączyłem do projektu.
Użytkownik zbig27 edytował ten post 26 wrzesień 2006, 22:04
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •