Bugs im ZIP-Packer unter Windows

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Bugs im ZIP-Packer unter Windows

Beitrag von Rudi »

- es lassen sich nur ZIPs bis zu einer bestimmte Größe erstellen/entpacken (2 GB?) - kann ich noch mit leben
- es kann nur eine begrenzte Anzahl an Dateien gepackt werden (500?)
- es lassen sich keine leeren Ordner packen
- Ordner in ZIPs werden beim Entpacken nicht angelegt
- wenn eine leere Datei gepackt wird, dann wird der erfolgreiche Packvorgang als Fehler moniert: 0 = 0 Byte und 0 = Fehler
- Dateien mit deutschen Umlauten werden mit chinesischen Umlauten versehen
- wenn versucht wird, eine bereits gepackte Datei noch einmal zu packen, dann lassen sich keine weiteren Dateien mehr packen (kackt ab)

teste:

Code: Alles auswählen

UseZipPacker()

If CreatePack(0, "D:\mycompressedfiles.zip")
	Repeat
	File$ =	OpenFileRequester("", "", "", 0)
	AddPackFile(0, File$, GetFilePart(File$))
Until File$ = #NUL$
ClosePack(0)
EndIf
Warum ist die Einrückung hier falsch?

Getestet unter Win7 x64 und PB 5.11 x86, Unicode und ASCII
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Bugs im ZIP-Packer unter Windows

Beitrag von RSBasic »

Rudi hat geschrieben:Warum ist die Einrückung hier falsch?
Markiere den Code und drücke Strg + I, dann wirds auch komplett richtig eingerückt.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bugs im ZIP-Packer unter Windows

Beitrag von ts-soft »

Rudi hat geschrieben:- es lassen sich nur ZIPs bis zu einer bestimmte Größe erstellen/entpacken (2 GB?) - kann ich noch mit leben
so ist es auch in der Hilfe dokumentiert!
Rudi hat geschrieben: - es lassen sich keine leeren Ordner packen
das ist eine fehlende Funktion, also ein FeatureRequest und kein Bug. Läßt sich auch leicht umgehen, entsprechenden Code hab ich bereits mehrmals gepostet.
Rudi hat geschrieben: - Ordner in ZIPs werden beim Entpacken nicht angelegt
Das ist ja wohl normal, bzw. Aufgabe des Programmierers. Ein optionales Flag (wieder FeatureRequest) wäre
vielleicht sinnvoll.
Rudi hat geschrieben: - wenn eine leere Datei gepackt wird, dann wird der erfolgreiche Packvorgang als Fehler moniert: 0 = 0 Byte und 0 = Fehler
Das ist Systembedingt und wurde bereits erklärt.
Rudi hat geschrieben: - Dateien mit deutschen Umlauten werden mit chinesischen Umlauten versehen
Kann ich mit der aktuellen PB Version nicht nachvollziehen, wurde bereits gefixed.
Bugreports zu alten PB-Versionen sind nicht sehr sinnvoll.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Bugs im ZIP-Packer unter Windows

Beitrag von Kiffi »

Rudi hat geschrieben:- es kann nur eine begrenzte Anzahl an Dateien gepackt werden (500?)
hier ein Workaround: http://www.purebasic.fr/german/viewtopi ... 11#p322211

Zwar nicht das Gelbe vom Ei, aber besser als nix.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bugs im ZIP-Packer unter Windows

Beitrag von ts-soft »

Nachtrag:
Ausserdem wäre es wesentlich sinnvoller, je "vermuteten" Bug, einen Thread zu öffnen.
Alles in eins macht ein sinnvolles weiterbearbeiten nur unnötig schwer, ausserdem hört
sich das ganze mehr wie ein "Frustreport" an, was es ja überwiegend auch ist.

Bugreports machen immer nur zur aktuellen Version einen Sinn!

Nachtrag:
Hier noch die Crossplattformlösung zum hinzufügen von leeren Verzeichnissen:

Code: Alles auswählen

Procedure AddEmptyDir(ID, name.s)
  If name <> ""
    ReplaceString(name, "\", "/", #PB_String_InPlace)
    If Right(name, 1) <> "/" : name + "/" : EndIf
    ProcedureReturn AddPackMemory(ID, 0, 0, name)
  EndIf
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Re: Bugs im ZIP-Packer unter Windows

Beitrag von Rudi »

Danke erstmal für die Antworten!

@RSBasic
Ja, geht bei mir aber erst wieder mit der neuen Version - kann keinen Fehler in den Einstellungen finden.

@all
Zum Erstellen von Pfaden behelfe ich mich mit:
MakeSureDirectoryPathExists_() bei ASCII und
SHCreateDirectory_() bei Unicode
Diese APIs sind aber auch nicht ganz sicher.

Das Problem mit den Umlauten besteht aber auch noch in der neuen PB-Version. Oder hat das mal jemand getestet? Dafür ist doch der Code da!

Leider ist niemand auf den letzten Punkt eingegangen.
Da behelfe ich mich damit, dass ich vor dem Packen einer Datei die ZIP auf ein Vorhandensein der aktuellen Datei durchsuche:

Code: Alles auswählen

UseZipPacker()
If CreatePack(0, "D:\mycompressedfiles.zip")
	Repeat
	File$ =	OpenFileRequester("", "", "", 0)
	Exist = 0
	If ExaminePack(0) ;bereits gepackte Dateien durchsuchen
		While NextPackEntry(0)
			Select PackEntryType(0)
				Case #PB_Packer_File
					If PackEntryName(0) = GetFilePart(File$)
						Exist = 1
						Break
					EndIf
			EndSelect
		Wend
	EndIf
	
	If Exist = 0
		AddPackFile(0, File$, GetFilePart(File$))
	EndIf
Until File$ = #NUL$
ClosePack(0)
EndIf

Bitte mal testen!

Also ein ziemlicher Umstand, bis man herausgefunden hat, warum das nicht geht und wie man das Problem lösen kann. Ja, das ist frustrierend, ts-soft.
Die Lib ist also noch sehr verbesserungswürdig. Schließlich soll sie doch dem Anwender die Arbeit erleichtern.
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bugs im ZIP-Packer unter Windows

Beitrag von ts-soft »

Rudi hat geschrieben: Die Lib ist also noch sehr verbesserungswürdig. Schließlich soll sie doch dem Anwender die Arbeit erleichtern.
Da stimme ich Dir zu, es fehlt noch eine Menge, siehe:
http://www.purebasic.fr/english/viewtop ... 45#p399245

Zip64-Support ist in der zugrunde liegenden libzip: http://www.nih.at/libzip/ ,
Version 0.11.0 bereits implementiert, aber leider für die Funktionen in PB nicht angepaßt.
(grössere Archive als 2 GB)

Ich hoffe mal, PB5.30 wird auf libzip 0.11.2 oder höher basieren und mehr Funktionalität bieten.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Re: Bugs im ZIP-Packer unter Windows

Beitrag von Rudi »

Habe jetzt mal die Version 5.22 getestet. Mit der scheinen sich die letzten beiden Punkte erledigt zu haben.
Damit kann ich schon ganz gut leben.

Was ich allerdings nicht verstehe, ist, dass PB als Rückgabewert nicht auch "-1" liefern können soll?!
Bei z.B. FileSize() geht das doch auch!
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Antworten