AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Entzippen 7za

Ein Thema von LuCSteR · begonnen am 15. Jan 2009 · letzter Beitrag vom 15. Jan 2009
Antwort Antwort
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#1

Entzippen 7za

  Alt 15. Jan 2009, 10:17
Hi,

hab die untenstehende Prozedur aus dem Forum gefunden um Dateien zu entzippen. In dem Beitrag stand auch, das sie funktionieren würde. Tut sie bei mir aber nicht.
Ich verstehe nicht ganz die beiden Übergabeparameter. 1.zu entzippende Datei(Pfad) 2.entzippte Datei(Pfad)...Er legt halt wirklich nur eine Datei an. War entpackt er die Datei(en) nicht automatisch in einen Ordner? Ist doch klar das Dateien nicht in eine andere Datei entzippt werden können. Wie untenstehend habe ich die Dateiendung weggelassen, in der Hoffnung das ein Ordner anstatt einer DAtei erstellt wird. Aber klappt nicht.

Uses
{$IFDEF FPC}zstream{$ELSE}ZLib{$ENDIF} Prozedur
Delphi-Quellcode:
procedure Decompress(InputFileName, OutputFileName: string);
var InputStream, OutputStream: TFileStream;
  DeCompressionStream: TDeCompressionStream;
  Buf: array[0..4095] of Byte;
  Count: Integer;
begin
  InputStream:=TFileStream.Create(InputFileName, fmOpenRead);
  try
    OutputStream:=TFileStream.Create(OutputFileName, fmCreate);
    try
      DecompressionStream := TDecompressionStream.Create(InputStream);
      try
        while true do
        begin
          Count := DecompressionStream.Read(Buf[0], SizeOf(Buf));
          if Count = 0 then
            break
          else
            OutputStream.Write(Buf[0], Count);
        end;
      finally
        DecompressionStream.Free;
      end;
    finally
      OutputStream.Free;
    end;
  finally
    InputStream.Free;
  end;
end;
Aufruf
Decompress(TempDownloadDir+IP+'\'+Form1.ListBox3.Items[i], TempDownloadDir+IP+'\'+SubStr{+'.log'});
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Entzippen mit zstream/zlib

  Alt 15. Jan 2009, 10:25
Ich glaub du nimmst etwas an was nicht so ist. zlib unt TCompressionStream/TDecompressionStream sind nicht für Zip-Dateien.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#3

Re: Entzippen mit zstream/zlib

  Alt 15. Jan 2009, 11:00
Irgendwie hat ich auch so die Vermutung. Und mit welchen Werkzeugen muss ich operieren? (bibliothek?kompo?methoden?)

Hatte auch an ein ShellExecute gedacht und irgendwie die Windows standard funktion nutzen, die ich alelrdings nicht kenne. XP besitzt ja die fähigkeiten zips zu öffenen/entpacken...komme ich auf dem weg zum ziel?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Entzippen mit zstream/zlib

  Alt 15. Jan 2009, 13:26
Hallo,

such mit Google mal nach ZipMaster, da gibt es irgendwo eine freie Komponente.
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#5

Re: Entzippen mit zstream/zlib

  Alt 15. Jan 2009, 13:47
Jo, danke. Hab schon vorher den Shell ansatz ausprobiert.
mit 7za.exe (kommandozeilen zip/unzip) funktioniert es fast. an sich bekomme ich dateien entpackt. aber ich weiss nicht warum genau bei dieser "C:\Dokumente und Einstellungen\duy5j5\Desktop\Neuer Ordner\Trier\Praxisarbeit_I\Programm\TempDownload\ 10.159.194.114\009_0946_629SGG1027_LOGFILES.zip" eingabe das archiv nicht gefunden werden kann...hab das archiv auch ma nach "d:\009_0946_629SGG1027_LOGFILES.zip" verschoben und dort extrahieren lassen. das hat funktioniert.

der lange pfad ist korrekt. hat es was mit den leerzeichen zu tun? oder aus den backslashes frontslashes machen?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: Entzippen mit zstream/zlib

  Alt 15. Jan 2009, 13:57
Hallo,

die Leerzeichen könnten ein Problem sein, wenn sie nicht mit den Hochkommata über ShellExecute beim Programm ankommen sollten, dann wird der Dateiname als mehrere Parameter interpretiert.

Mach Dir mal 'ne Batchdatei, die Du per ShellExecute aufrufst. Der Batchdatei übergibst Du Deinen bisherigen Aufruf in Shellexecute in unveränderter Form.

Die Batchdatei könnte in etwas so aussehen (nicht getestet)
Code:
@ECHO OFF
Name der Batchdatei %0
Parameter 1 %1
Parameter 2 %2
Parameter 3 %3
Parameter 4 %4
Parameter 5 %5
Parameter 6 %6
Parameter 7 %7
Parameter 8 %8
Parameter 9 %9
@pause
Wenn Du in der Ausgabe der Batchdatei den Dateinamen auf mehrer Zeilen verteilt siehst, sind die Leerzeichen das Problem, da dann der Dateiname nicht als ein Parameter übergeben wird.
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#7

Re: Entzippen mit zstream/zlib

  Alt 15. Jan 2009, 14:22
Okay nun funktioniert es. habe wie hier im Beitrag die hochkommata zum hervorheben auch mit in die übergabe eingebaut. jetzt funktioniert es. was allerdings immernoch unverständlich für mich ist, warum der selbe pfad nicht direkt in der kommandozeile per hand funktioniert (auch nicht mit hochkommata)...naja egal, danke schön

Für alle die ein ähnliches Vorhaben tätigen wollen, also zippen/entzippen - so funktionierts:

Es gibt keine Kommandozeile mit der die WinXP zip funktion ansprechen kann. deshalb "7za.exe" ausm netz laden.
ein aufruf im quelltext könnte so aussehen
ShellExecute(0, 'open', PChar(EXEpfadVON7za+'\7za.exe'), PChar('x "'+DATEIPFADderZIPdatei+'"'), nil, SW_SHOWNORMAL); Die Übergabeparameter können +ber die Kommandozeile ausgelesen werden (ins Verzeichnis von "7za.exe" wechseln und in die anweisung "7za" eingeben). Viel Spaß
  Mit Zitat antworten Zitat
Benutzerbild von sofl
sofl

Registriert seit: 19. Okt 2005
Ort: Dresden
16 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Entzippen mit zstream/zlib

  Alt 15. Jan 2009, 14:27
Zitat von LuCSteR:
Irgendwie hat ich auch so die Vermutung. Und mit welchen Werkzeugen muss ich operieren? (bibliothek?kompo?methoden?)

Hatte auch an ein ShellExecute gedacht und irgendwie die Windows standard funktion nutzen, die ich alelrdings nicht kenne. XP besitzt ja die fähigkeiten zips zu öffenen/entpacken...komme ich auf dem weg zum ziel?
Eine Möglichkeit wäre auch die JEDI VCL lib zu installieren. Unter den 600 Komponenten befinden sich auch recht gute zip und cab Komponenten.
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#9

Re: Entzippen mit zstream/zlib

  Alt 15. Jan 2009, 14:51
Wird oft überlesen, aber ich arbeite "leider nur" mit lazarus. da funktioniert selten mal eine für delphi geschriebene bibo. aber danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz