Komponent którego potrzebujesz to
ZIPForge dostępny tutaj
http://www.componentace.com/download/download.php?editionid=12 dla twojej wersji środowiska. To niestety komponent komercyjny.
O darmowych nie słyszałem.
janek2012 napisał(a):Orientuje się ktoś może, czy istnieje taki komponent, który spakuje pliki do zip/rar/tar
ZIPForge obsługuje tylko
ZIP, o komponentach do obsługi
RAR i
TAR nie słyszałem.
janek2012 napisał(a):właduje do programu i jeszcze ładnie wypakuje z zasobów?
Nie bardzo rozumiem o co chodzi z tym władowywaniem do programu. Jeżeli chodzi Tobie o to, żeby program sam coś wprowadził do własnego pliku EXE jako zasób, czy nawet cokolwiek, to nie jest to wogóle możliwe, gdyż nie można edytować plików aktywnych procesów, a każdy uruchomiony plik programu jest procesem aktywnym.
Jeżeli jednak chodzi Tobie o to, że umieszczasz archiwum w zasobach programu jako zasób jeszcze na etapie programowania to jest to oczywiście możliwe, ale z takiego archiwum niczego nie da się wypakować, gdyż w zasobach programu to jest ono zasobem a nie archiwum, więc najpierw musisz to archiwum wypakować gdzieś na dysk, a potem to już możesz wczytywać zawartość tego archiwum bezpośrednio do pamięci, bez wypakowywanie jego zawartości na dysk.
janek2012 napisał(a):Myślałem, że Abbrevia da sobie z tym radę, ale chyba jednak nie,
A z czym konkretnie
Abbrevia nie daje sobie rady?
Różnica między Abbrevia i ZIPForge polega na wygodzie użycia. ZIPForge to jeden komponent, który obsługuje wszystkie aspekty archiwów ZIP za pomocą kilku naprawdę prostych funkcji, ale tylko archiwa ZIP. ZIPForge jest komponentem komercyjnym i po zainstalowaniu wersji TRAIL w gotowym programie chwili jego uruchomienia wyświetla się komunikat o tym, że jest to właśnie wersja próbna poza tym działa. Jeżeli jednak najpierw zainstalujesz komponent, potem skopiujesz sobie gdzieś katalog z zainstalowanymi plikami, a potem odinstalujesz komponent, to będziesz miał biblioteki do obsługi archiwum ZIP. Używając tylko bibliotek zamiast komponentu, czyli włączasz do projektu bibliotekę:
Środowisko musi znać lokalizację tej biblioteki, więc dodajesz ścieżkę dostępu do tej biblioteki, a wygląda to mnie więcej tak w środowisku C++Builder 2010:
- W menu Tools wybierz Options.
- Następnie szukaj zakładki Environment Options.
- Szukaj sekcji C++ Options bloku Path and Directories.
- Przy polu (typu Edit) o nazwie Search path kliknij na przycisku ...
- Powinno wyskoczyć okno Directories w którym dodaj ścieżkę dostępu do katalogu z komponentem. Dla ZIPForge jest to np. c:\Program Files\Embarcadero\ComponentAce\ZipForge\Lib\Delphi 2010 and C++ Builder 2010\
tools-options.png
Bibliotekę
ZipForge.hpp włączasz np. w pliku nagłówkowym, ale w pliku źródłowym musisz jeszcze dodać:
#pragma link "ZipForge", mniej więcej w tym miejscu:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "ZipForge"
Teraz wystarczy tworzyć komponent dynamicznie, czyli, np tak:
Plik nagłówkowy np. Unit1.h
private:
TZipForge *Archiver;
Plik źródłowy np. Unit1.cpp
Archiver = new TZipForge(NULL);
Przy stosowaniu bibliotek zamiast komponentu nie wyskakuje żaden komunikat i nie ma żadnych ograniczeń.
Przykład użycia
ZIPForge w tych postach:
http://programowanie.cal.pl/forum/viewtopic.php?f=5&t=1050&p=6956&hilit#p6945 oraz
http://programowanie.cal.pl/forum/viewtopic.php?f=2&t=617&p=3637#p3637
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.