Thema: Delphi Duplicate internal name

Einzelnen Beitrag anzeigen

gelberkaktus

Registriert seit: 18. Mär 2012
Ort: Kölleda/Thüringen
16 Beiträge
 
Delphi 7 Personal
 
#7

AW: Duplicate internal name

  Alt 6. Mai 2012, 15: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 15:26 Uhr) Grund: Download hinzugefügt
  Mit Zitat antworten Zitat