Registriert seit: 18. Mär 2012
Ort: Kölleda/Thüringen
16 Beiträge
Delphi 7 Personal
|
AW: Duplicate internal name
6. Mai 2012, 16:19
der code
zum zippen
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
//integers
i:integer;
//eingelesene variabeln
mcjar, modzip, neunameojar, ordner: string;
//konvertierte variabeln
mczip:string;
//entzippte variablen
mcdic:string;
//umbenannte variabeln
neumczip, neumczip2:string;
//gezippte variablen
neuzip :string;
//rekonvertierte variabeln
neujar:string;
begin
//alle variabeln einlesen
mcjar:= Edit1.Text;
modzip:= Edit2.Text;
neunameojar:= Edit3.Text;
ordner:=ExtractFileDir(mcjar)+'\temp\';
//löscht endung von mc.jar in var
mczip:= Copy(mcjar, 1, Length(mcjar) - 4);
//fügt neue endung hinzu in var
mczip:= mczip +'.zip';
//kopiert mc.jar zu mc.zip nun in fest
if CopyFile(PChar(mcjar), PChar(mczip), False) then
ShowMessage('schritt1 komplett');
Progressbar1.Position:= 10;
//entpackt mcjar
mcdic:= Form1.unzip(mczip);
Showmessage('Schritt 2 fertig');
Progressbar1.Position:= 20;
//löscht meta-inf
deldir(mcdic + 'META-INF\');
ShowMessage('Schritt 3 fertig');
Progressbar1.Position:= 30;
//kopiert mod in mc-datei
with Zipmaster1 do
begin
ZipFilename:=modzip;
ExtrBaseDir:=mcdic;
Extract;
end;
ShowMessage('Schritt 4 fertig');
Progressbar1.Position:= 50;
//mc.zip löschen
DeleteFile(mczip);
//neuenordner finden (extractfiledir findet den übergeordenten ordener heraus)
//ordner umbenennen
Zipmaster1.Clear;
//daten listen
ListFileDir(mcdic+'\', ListBox1.Items);
Progressbar1.Position:= 60;
//neue zip
neuzip:= neunameojar + '.zip';
//neuzip:= ExtractFileDir(mcjar) + '\' + neunameojar + '.zip';
ShowMessage('Schritt 5 fertig');
Progressbar1.Position:= 70;
//wieder zippen
//neuzip:= Form1.zip(neuname, neuzipn);
with Zipmaster1 do
begin
ZipFilename:= '';
FSpecArgs.Clear;
ZipFilename:=(neuzip);
try
for i:= 0 to (ListBox1.Items.Count -1) do
FSpecArgs.Add(ListBox1.Items[i]);
finally
Add;
end; //fehler immernoch
end;
Showmessage('schritt 6 fertig');
Progressbar1.Position:= 100;
end;
//entpacken
function TForm1.unzip(ziparchiv:string):string;
var
ausgabe:string;
begin
ausgabe:=ziparchiv;
ausgabe:= Copy(ausgabe, 1, Length(ausgabe) - 4);
ausgabe:= ausgabe +'\';
mkdir(ausgabe);
with Zipmaster1 do
begin
ZipFilename:=ziparchiv;
ExtrBaseDir:=ausgabe;
Extract;
end;
ShowMessage('FERTIG');
Result:= ausgabe;
end;
//zippen
function TForm1.zip(ordner:string; ausgabe:string):string;
begin
ordner:= ordner + '\';
ShowMessage(ordner);
with Zipmaster1 do
begin
ZipFilename:=ausgabe;
FSpecArgs.Add(ordner);
Add;
end;
ShowMessage('FERTIG');
Result:= ausgabe;
end;
//verzeichnis löschen
function deldir(dir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_DELETE;
fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
pFrom := PChar(dir + #0);
end;
Result := (0 = ShFileOperation(fos));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
modzip, ausgabe: string;
begin
modzip:= Edit2.Text;
ausgabe := Form1.unzip(modzip);
end;
procedure TForm1.Button2Click(Sender: TObject);
var ordner, nix:string;
begin
SelectDirectory('Speicherordner wählen', '', ordner);
ShowMessage(ordner);
nix:= Form1.zip(ordner, (ExtractFilePath(ParamStr(0))+'test.zip'));
end;
procedure ListFileDir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if ((SR.Attr and faDirectory) = faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
FileList.Delete(0);
FileList.Delete(0);
end;
Hier das ganze noch als Download mit den Testdateien, wessen Pfadim Programm angepasst werden muss.
"Ohne konkrete Symbole ist der Computer bloß ein Haufen Schrott."
Neil Postman
Geändert von gelberkaktus ( 6. Mai 2012 um 16:26 Uhr)
Grund: Download hinzugefügt
|
|
Zitat
|