XbZLibZip bleibt beim Entpacken stehen

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Benutzeravatar
ReneScharf
Rookie
Rookie
Beiträge: 10
Registriert: Fr, 03. Dez 2021 10:00

XbZLibZip bleibt beim Entpacken stehen

Beitrag von ReneScharf »

Hallo

ich habe ein seltsames Phänomen dessen Ursache sich mir nicht erschließt.

Beim Entpacken einer Zipdatei mit
oZIP := XbZLibZip():New()
if oZIP:open(cZIP_Name,XBZ_OPEN_TEST) // nur eine intakte Datei importieren
oZIP:Extract(cZielPfad,"*.*",.t.,XBZ_OVERWRITE_ALL)

Bleibt das Programm hängen. Da es eine Webapplikation ist weiß ich noch nicht 100%ig ob schon beim öffnen oder erst beim Extract.
Kontrolliert man die Datei im Windows Explorer oder 7zip sieht sie ganz normal aus (lässt sich öffnen und extrahieren)

Hatte schon mal jemand ein solches Thema? Die Datei wurde auch mit einer xbase-Anwendung und mit dem gleichen XbZLibZip erzeugt.

Das ist nur bei einigen Zips der Fall, andere funktionieren perfekt. Auch Randbedingungen (Zielverzeichnis beschreibbar, existent und leer ) sind schon abgeklärt und ausgeschlossen.

Bin für jede Idee offen. Auch für den Austausch des XbZLibZip wenn mir jemand eine Alternative hat.

Viele Grüße
René
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9933
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 142 Mal
Danksagung erhalten: 484 Mal
Kontaktdaten:

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von Tom »

Hallo, René.

Ob es beim Öffnen oder beim Extract geschieht, sollte sich mit etwas ergänzendem Debug-Code herausfinden lassen (Rückgabewerte anzeigen/in eine Datei schreiben o.ä.). Kann man den Code nicht anderswo ausführen als in der Web-App?

Meine Lieblings-Zusatzbibliothek Chilkat hat u.a. umfangreiche Zip-Funktionalitäten:
https://www.chilkatsoft.com/refdoc/xChilkatZipRef.html
Herzlich,
Tom
Benutzeravatar
azzo
1000 working lines a day
1000 working lines a day
Beiträge: 942
Registriert: So, 28. Mär 2010 19:21
Hat sich bedankt: 15 Mal
Danksagung erhalten: 22 Mal

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von azzo »

Hallo,
> Bin für jede Idee offen. Auch für den Austausch des XbZLibZip wenn mir jemand eine Alternative hat.

Ich nutze schon länger 7-Zip per RUN-Befehl – hat sich als sehr stabile Alternative bewährt:


RUN /N 7z.exe x -y -o"{cZielVerzeichnis}" "{cZipDatei}"

Voraussetzung:

7z.exe muss verfügbar sein (z. B. im Projektverzeichnis oder über den Systempfad).

Vorteile:

Funktioniert mit allen gängigen ZIP-Formaten, auch mit Unicode-Dateinamen, langen Pfaden etc.

Extrem robust, keine Hänger oder Formatprobleme bisher.

Keine DLLs oder Drittbibliotheken nötig.

Auch außerhalb der App direkt testbar (Kommandozeile).

Falls du mehr Kontrolle brauchst (z. B. Error-Handling oder Logging), geht’s auch über ShellExecute() oder CreateProcess().

LG
Otto




Code: Alles auswählen

Beispiel (harbour)
  DCOM := '7z a -tzip ' + cDocNr + '.zip' + '  -ir!' + cText + '\*.*'
   
   WAITRUN(DCOM,0)


Voraussetzung: 
if file( "7Z.exe") = .F.
      msginfo("7Z.exe fehlt")
   endif
   if file( "7Z.dll") = .F.
      msginfo("7Z.dll fehlt")
   endif
   
   /*
7-Zip 4.57  Copyright (c) 1999-2007 Igor Pavlov  2007-12-06

Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...]
[<@listfiles...>]

<Commands>
a: Add files to archive
b: Benchmark
d: Delete files from archive
e: Extract files from archive (without using directory names)
l: List contents of archive
t: Test integrity of archive
u: Update files to archive
x: eXtract files with full paths
<Switches>
-ai[r[-|0]]{@listfile|!wildcard}: Include archives
-ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
-bd: Disable percentage indicator
-i[r[-|0]]{@listfile|!wildcard}: Include filenames
-m{Parameters}: set compression Method
-o{Directory}: set Output directory
-p{Password}: set Password
-r[-|0]: Recurse subdirectories
-scs{UTF-8 | WIN | DOS}: set charset for list files
-sfx[{name}]: Create SFX archive
-si[{name}]: read data from stdin
-slt: show technical information for l (List) command
-so: write data to stdout
-ssc[-]: set sensitive case mode
-ssw: compress shared files
-t{Type}: Set type of archive
-v{Size}[b|k|m|g]: Create volumes
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
-w[{path}]: assign Work directory. Empty path means a temporary directory
-x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
-y: assume Yes on all queries

*----------------------------------------------------------
*/
   







ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2620
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 23 Mal
Danksagung erhalten: 97 Mal

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von ramses »

azzo hat geschrieben: Fr, 23. Mai 2025 7:39 Falls du mehr Kontrolle brauchst (z. B. Error-Handling oder Logging), geht’s auch über ShellExecute() oder CreateProcess().
Hast du Unterlagen oder Beispiele wie Packen und Entpacken mehrere Dateien über CreateProcess() geht?
Valar Morghulis

Gruss Carlo
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2620
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 23 Mal
Danksagung erhalten: 97 Mal

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von ramses »

ReneScharf hat geschrieben: Fr, 23. Mai 2025 7:18
ich habe ein seltsames Phänomen dessen Ursache sich mir nicht erschließt.
Welche Version der Zip.dll verwendest du?
Bekommst du eine Fehlermeldung?

Ich kenne das Problem, mit relativ kleinen Zip Files mit Textfiles im Inhalt gibts Fehlermeldungen "DLL couldn't be loaded" beim Auspacken. Hunderte gehen und ab und zu eine ganz bestimmte nicht. Die erzeugt immer einen Fehler.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9933
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 142 Mal
Danksagung erhalten: 484 Mal
Kontaktdaten:

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von Tom »

Ob mit Runshell oder über die API-Funktionalität CreateProcess (da wäre ich auch an einem funktionierenden Codebeispiel interessiert!) - die Nutzung externer Anwendungen für Einzelaufgaben ist eine architektonische Entscheidung, die nicht nur Vorteile hat, m.E. sogar deutlich weniger als sie Nachteile hat. Es ist sehr schwer, den Prozess zu überwachen oder zu beeinflussen oder sein Ergebnis (oder gar Zwischenergebnisse, etwa für Informationen über Fortschritte) zu kontrollieren, man hat so gut wie keine Kontrolle über die Versionierung der genutzten Anwendung und gerät u.U. in schwerwiegende/unlösbare Rechtekonflikte. Die Nutzung von 3rd-Party-DLLs, die man selbst mit ausliefert und direkt in der Anwendung steuert, geht nicht mit diesen Nachteilen einher. Deshalb bevorzugen wir diesen Weg, wenn es schon nicht direkt mit Bordmitteln zu lösen ist.
Herzlich,
Tom
Benutzeravatar
azzo
1000 working lines a day
1000 working lines a day
Beiträge: 942
Registriert: So, 28. Mär 2010 19:21
Hat sich bedankt: 15 Mal
Danksagung erhalten: 22 Mal

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von azzo »

Hallo Carlo,
mit directory() nutze ich es so:
LG
Otto

Code: Alles auswählen


function Main()
 
   local DCOM := ""
   local aDir := {}
   local I := 0
   local cSrc := ""
   local cDst := ""
   local cVerzeichnis := ""
   local cPath := "c:\testzip\"
   *----------------------------------------------------------
  ? "Start entpacken der archivierten ICBackup files aus iTouch"
  
   aDir := directory(   "*.zip","DHS")
   for I = 1 to len(aDir)
	   cSrc := aDir[I,1]
		//msginfo( cSrc )
		//FWLOG  cSrc
	   cVerzeichnis := left(aDir[I,1],9)
	   IF lisdir( ALLTRIM( ".\" + cVerzeichnis ) )= .f.
	      lmkdir( ".\" + cVerzeichnis )
	   ENDIF
	   cDst := cPath + cVerzeichnis + "\" 
	   //entpacken
   	FWLOG "entpacken", cDst, cPath  + aDir[I,1]
   
 		DCOM := '7Z.exe x ' + cPath  + aDir[I,1] + " -o" +  cDst  + " *.* -r"

   	WAITRUN(DCOM,1)
   
   SYSREFRESH()
  
   next


  ? "ENDE"
  
return nil
//----------------------------------------------------------------------------//


Benutzeravatar
azzo
1000 working lines a day
1000 working lines a day
Beiträge: 942
Registriert: So, 28. Mär 2010 19:21
Hat sich bedankt: 15 Mal
Danksagung erhalten: 22 Mal

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von azzo »

Tom, was spricht für dich konkret gegen den Einsatz wohldefinierter, portabel mitgelieferter Tools wie 7z.exe, wenn diese:
fest in die Anwendung eingebettet sind (Hash/Version geprüft), kontrolliert aufgerufen werden (CreateProcess mit Exitcode), per Logfile/Timestamp/Flag-File sogar Fortschritt oder Status abbilden, und sich gegenüber einer 3rd-Party-DLL gerade durch Stabilität und Updatemöglichkeit auszeichnen?

Im Bereich der automatisierten Archivverarbeitung unter Windows ist 7z.exe eine der am häufigsten eingesetzten Lösungen, insbesondere aufgrund der breiten Formatunterstützung und Portabilität.

LG
Otto
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9933
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 142 Mal
Danksagung erhalten: 484 Mal
Kontaktdaten:

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von Tom »

Vieles.
Aber ich will hier nicht schon wieder einen Thread mit solchen Diskussionen shreddern.
Herzlich,
Tom
RolandG
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 401
Registriert: Mi, 09. Jan 2019 16:02
Wohnort: Neresheim
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von RolandG »

Hatte mit XbpZLibZip verschiedentlich Probleme.
Deshalb dann umgestellt auf 7z, das ich mitliefere. Kommt aber sehr selten zum Einsatz.
Gruß
Roland
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14937
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 42 Mal
Danksagung erhalten: 133 Mal
Kontaktdaten:

Re: XbZLibZip bleibt beim Entpacken stehen

Beitrag von Jan »

Ich mach das inzwischen mit Windows-Boardmitteln. Die Diskussion darum hatten wir hier viewtopic.php?p=139146#p139146. Bin dann vollkommen unabhängig von irgend welchen Fremdprodukten oder libs.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten

Zurück zu „Newbie“