1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
//Unzipper.h
#ifndef UNZIPPER_H
#define UNZIPPER_H
#include
#include
#include
#include
using namespace std;
class CUnzipper {
public:
CUnzipper(); //init
~CUnzipper(); //alles freigeben
void UnzipToFile(char *srcZip,char *srcFile, char *pass, char *target);
void UnzipToFile(char *srcZip,char *srcFile, char *target);
private:
tbVFile* m_pTbVFile;
void Unzip(string TargetFilename);
};
#endif
//Unzipper.cpp
#include "Unzipper.h"
//TriBase Initialisieren
//Konstruktor
CUnzipper::CUnzipper() {
if(!(tbInit()))
{
TB_ERROR_MESSAGE("Fehler beim Initialisieren von tbInit");
}
//Virtuelle Datei initialisieren
m_pTbVFile = new tbVFile;
}
//Entpacken mit Passwort
void CUnzipper::UnzipToFile(char *srcZip,char *srcFile, char *pass, char *target)
{
string TBUnzipString = (srcFile);
TBUnzipString += "@";
TBUnzipString += (*srcZip);
TBUnzipString += "#";
TBUnzipString += (*pass);
char * buffer = new char[TBUnzipString.length()];
strcpy(buffer,TBUnzipString.c_str());
if(m_pTbVFile->Init(buffer))
{
//Fehler unterlaufen
TB_ERROR_MESSAGE("Fehler beim erstellen der Virtuellen Datei");
}
Unzip(target);
}
//Entpacken ohne Passwort
void CUnzipper::UnzipToFile(char *srcZip,char *srcFile, char *target)
{
string TBUnzipString = (srcFile);
TBUnzipString += "@";
TBUnzipString += (*srcZip);
char * buffer = new char[TBUnzipString.length()];
strcpy(buffer,TBUnzipString.c_str());
if(m_pTbVFile->Init(buffer))
{
//Fehler unterlaufen
TB_ERROR_MESSAGE("Fehler beim erstellen der Virtuellen Datei");
}
Unzip(target);
}
//Macht die eigentliche Arbeit,
//Erstellt eine virtuelle Datei mit der TriBase Engine und schreibt diese dann lokal
//nieder
//=> Entpackt!
void CUnzipper::Unzip(const string TargetFilename)
{
char * buffer = new char[TargetFilename.length()];
strcpy(buffer,TargetFilename.c_str());
m_pTbVFile->SaveToFile(buffer);
}
//TriBase beenden, Destruktor
CUnzipper::~CUnzipper() {
TB_SAFE_DELETE(m_pTbVFile);
tbExit();
}
//main.cpp
#include "Unzipper.h"
using namespace std;
int main() {
cout << "Pfad zum zip archiv angeben: ";
char ZipArchiv[255];
cin >> (ZipArchiv);
cout << endl;
cout << "Welche Datei soll extrahiert werden?";
char TargetFile[255];
cin >> (TargetFile);
cout << endl;
cout << "Falls es ein Passwort gibt tippe es ein, falls nicht, einfach Enter drücken!";
char Passwort[255];
cin >> (Passwort);
cout << endl;
CUnzipper *Unzipper = new CUnzipper;
char *TargetFileName = "test.html";
Unzipper->UnzipToFile(ZipArchiv, TargetFile, Passwort, TargetFileName);
delete Unzipper;
Unzipper = NULL;
}
|