KOD cpp: UKRYJ
#include <memory>
//----------------------
TMemoryStream *mStream = new TMemoryStream();
Archiver->FileName = "nazwa pliku archimum";
Archiver->OpenArchive(fmOpenRead);
Archiver->Password = "hasło";
mStream->Position = 0;
String aFileName = "nazwa pliku.jpg";
Archiver->ExtractToStream(aFileName, mStream);
mStream->Position = 0;
std::auto_ptr<TJPEGImage> JImage(new TJPEGImage());
JImage->LoadFromStream(mStream);
Image1->Picture->Assign(JImage.get());
mStream->Position = 0;
Archiver->CloseArchive();
delete mStream;
//----------------------
TMemoryStream *mStream = new TMemoryStream();
Archiver->FileName = "nazwa pliku archimum";
Archiver->OpenArchive(fmOpenRead);
Archiver->Password = "hasło";
mStream->Position = 0;
String aFileName = "nazwa pliku.jpg";
Archiver->ExtractToStream(aFileName, mStream);
mStream->Position = 0;
std::auto_ptr<TJPEGImage> JImage(new TJPEGImage());
JImage->LoadFromStream(mStream);
Image1->Picture->Assign(JImage.get());
mStream->Position = 0;
Archiver->CloseArchive();
delete mStream;
przykład wczytania pliku tekstowego do Memo bez wypakowywania do pliku:
KOD cpp: UKRYJ
#include <memory>
//----------------------
TMemoryStream *mStream = new TMemoryStream();
Archiver->FileName = "Nazwa pliku archiwum";
Archiver->OpenArchive(fmOpenRead);
Archiver->Password = "hasło";
Archiver->ExtractToStream("nbazwa pliku.txt", mStream);
mStream->Position = 0;
Memo1->Lines->LoadFromStream(mStream);
mStream->Position = 0;
Archiver->CloseArchive();
delete mStream;
//----------------------
TMemoryStream *mStream = new TMemoryStream();
Archiver->FileName = "Nazwa pliku archiwum";
Archiver->OpenArchive(fmOpenRead);
Archiver->Password = "hasło";
Archiver->ExtractToStream("nbazwa pliku.txt", mStream);
mStream->Position = 0;
Memo1->Lines->LoadFromStream(mStream);
mStream->Position = 0;
Archiver->CloseArchive();
delete mStream;
Jak widzisz schemat jest jeden.
antonio559 napisał(a):Wszystko dziala poprawnie lecz po otwarciu archiwum wszystkie nazy plikow sa dostepne.
Nadaj plikowi jakieś zarejestrowane w systemie rozszerzenie wtedy Total Commander będzie próbował otworzyć plik w programie i nie będzie sprawdzał typu pliku. Ewentualnie zarejestruj rozszerzenie nadane plikowi przypisując je do swojego programu.
antonio559 napisał(a):Image zostaje wywolane w nowym oknie i po zamknieciu okna plik zostanie skasowany.
Podałem rozwiązanie, wiec to już chyba nie będzie problemem.
antonio559 napisał(a):Inna sprawa jest dodanie pliku do archiwum np z Total Commandera plik zostanie dodany lecz juz nie bedzie zabezpieczony.
No niestety, cudów nie ma.




