minizip

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Danke für Ihre ZahlungZahlung mit PayPal

Der Zahlungsbetrag wurde dem Verkäufer bereits gutgeschrieben.

Transaktionscode: 2B55888646511450H
Die Zahlung an xxxxxx@xxxxx.xx ist abgeschlossen.
Nen' neuen Porsche wirst du dir davon nicht kaufen können aber es ist sowieso eher als ein Zeichen von Respekt und Anerkennung zu sehen. :allright:
Zuletzt geändert von Fluid Byte am 19.02.2009 19:40, insgesamt 2-mal geändert.
Windows 10 Pro, 64-Bit / Outtakes | Derek
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

Beitrag von ts-soft »

@Fluid Byte :allright: kann ich gut gebrauchen
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
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

Beitrag von ts-soft »

Update :mrgreen:

hinzugefügt:
ZIP_IsPasswordRequired(), #True wenn encrypted, #False wenn nicht

geändert:
ZIP_ExtractArchiv() wurde wesentlich beschleunigt! Diese Funktion unterstüzt
jetzt ein Callback mit 2 Parametern: ZIP_ArchivCallback(progress, files)
Files ist der Gesamtfortschritt

Jemand noch Ideen?

Gruß
Thomas

@Fluid Byte
Nimmste bitte die Mail aus dem Zitat :mrgreen:
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
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Recht so! Für meine Kohle erwarte ich stündliche Updates! :mrgreen:
ts-soft hat geschrieben:Nimmste bitte die Mail aus dem Zitat
Erledigt. <)
Windows 10 Pro, 64-Bit / Outtakes | Derek
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

Beitrag von ts-soft »

Fluid Byte hat geschrieben:Recht so! Für meine Kohle erwarte ich stündliche Updates! :mrgreen:
Stündlich ist teurer :mrgreen:

Update

Dateiattribute für Files (nicht für Ordner) werden gespeichert, bzw. wieder-
hergestellt. Dateidatum wird gespeichert und wiederhergestellt.

example3.pb hinzugefügt, mit Progressbalken :wink:

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
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Mir ist gerade aufgefallen das es zu einem Fehler kommt wenn man aus einem Archiv OGG-Dateien lädt die eine bestimmte Größe überschreiten. Ganz konkret habe ich hier ein Archiv mit zwei Dateien. Die eine ist 202847 Bytes groß und lädt problemlos. Die andere hat eine Größe von 495116 Bytes und da kackt der CatchSound() Befehl jedesmal ab.

Hier der Quelltext:

Code: Alles auswählen

XIncludeFile "MiniZIP.pbi"

Procedure ZIP_AccessArchive(Filename.s,*Length.LONG)
	Protected Index, mzfi.unz_file_info, ZIPFile$ = "music.zip"

	Index = ZIP_GetFileNumber(ZIPFile$,Filename)

	If Index > 0
		ZIP_GetFileInfo(ZIPFile$,Index,mzfi)		
		
		*Length\l = mzfi\uncompressed_size
		
		ProcedureReturn ZIP_CatchFile(ZIPFile$,Index)
	EndIf
EndProcedure


InitSprite() : InitKeyboard() : InitSound()

OpenWindow(0,0,0,640,480,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)

UseOGGSoundDecoder()

; ///////////////////////////////////////////////////
;
; das auskommentierte file wird nicht geladen da es
; anscheindend eine bestimte Dateigröße überschreitet
;
; ///////////////////////////////////////////////////

; Result = ZIP_AccessArchive("sample1.ogg",@Length) ; 495116 Bytes

Result = ZIP_AccessArchive("sample2.ogg",@Length) ; 202847 Bytes

; ----------------------------------------------------

CatchSound(0,Result,Length)
FreeMemory(Result)

PlaySound(0)

Repeat
	Repeat
		EventID = WindowEvent()
	
		Select EventID
			Case #PB_Event_CloseWindow : End 
		EndSelect
	Until EventID = 0
	
	ExamineKeyboard()
	ClearScreen($804020)	
	FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Ich habe dir alles noch mal lauffähig zusammengepackt und hoch geladen:

http://www.codedreality.de/tl_files/tem ... _error.rar
Windows 10 Pro, 64-Bit / Outtakes | Derek
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

Beitrag von ts-soft »

Nur wenn ich "UseOGGSoundDecoder()" weglasse, wird das File korrekt
gecatched. Meine Funktion ist also Fehlerfrei, Inhalt des Speichers entspricht
der Datei, nur mit "UseOGGSoundDecoder()" wirds garnicht geladen, warum
auch immer, hat aber nichts direkt mit meinem Code zu tun, eher mit der
Lib, bzw. mit was PB da macht.

Dein Beispiel ist etwas umständlich :wink:

Code: Alles auswählen

XIncludeFile #PB_Compiler_Home + "include\minizip_include.pbi"

InitSprite() : InitKeyboard() : InitSound()

OpenWindow(0,0,0,640,480,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)

UseOGGSoundDecoder()

*mem = ZIP_CatchFile("music.zip", 2)

CatchSound(0,*mem,MemorySize(*mem))
FreeMemory(*mem)

PlaySound(0)

Repeat
	Repeat
		EventID = WindowEvent()
	
		Select EventID
			Case #PB_Event_CloseWindow : End 
		EndSelect
	Until EventID = 0
	
	ExamineKeyboard()
	ClearScreen($804020)	
	FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
und die verwendete Version von minizip veraltet (damit hats aber nicht zu tun)

Kann ich im moment nicht weiterhelfen :( , bleibe aber dran

// Nachtrag:
Da ogg-dateien sowieso durch zip fast garnicht mehr gepackt werden,
vergleiche mal die Dateigröße des Archivs mit den beiden entpackten Dateien,
böte sich doch an WAV zu nutzen, die werden besser gepackt
so das die Größe in etwa gleich bleibt.
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
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

ts-soft hat geschrieben:Dein Beispiel ist etwas umständlich
Im Gegenteil. Das eigentliche Archiv beinhaltet um die hundert Dateien mit diversen Unterverzeichnissen. Außerdem ändert sich der Inhalt fast täglich. Von daher kann ich nicht mit festen Indizes arbeiten.
ts-soft hat geschrieben:Da ogg-dateien sowieso durch zip fast garnicht mehr gepackt werden, vergleiche mal die Dateigröße des Archivs mit den beiden entpackten Dateien, böte sich doch an WAV zu nutzen, die werden besser gepackt so das die Größe in etwa gleich bleibt.
Dann muss das Archiv aber auch mit entsprechend hoher Kompressionsrate erstellt werden was dann mehr Zeit zum Entpacken benötig. Im Moment ist das Archiv mit mit der Einstellung "Speichern" versehen, somit geschieht das Entpacken fast in Echtzeit. Aber es wäre sicherlich eine Alternative.
ts-soft hat geschrieben:Kann ich im Moment nicht weiterhelfen Sad , bleibe aber dran
Ist doch zum kotzen man ... :freak:

Keine Angst, dich trifft keine Schuld. Ich eiere nur an diesem Kackspiel schon über eine Jahr rum deshalb will ich endlich mal fertig werden. Ich habe zwar nicht immer Zeit daran zu arbeiten und andererseits wirklich viel durch das Projekt gelernt aber man will ja mal zu Potte kommen.

Mal am Rande, die PureZIP DLL von gnozal hat damit keine Probleme. :twisted:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Fluid Byte hat geschrieben:Mal am Rande, die PureZIP DLL von gnozal hat damit keine Probleme. :twisted:
was Ihr (Du) mal testen könnte(s)t: Tritt dieser 'Bug' auch mit
UsePNGImageDecoder() auf? Hiermit hat nämlich die PureZIP-Lib Probleme.
Vielleicht gibt es Parallelen?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

ts-soft hat geschrieben:Nur wenn ich "UseOGGSoundDecoder()" weglasse, wird das File korrekt gecatched.
Moment mal, Moment mal ...

Du sagst ohne UseOGGSoundDecoder() funktioniert es?

Warum schlägt dieser Code dann fehl?

Code: Alles auswählen

XIncludeFile "MiniZIP.pbi"

Index = ZIP_GetFileNumber("music.zip","sample2.ogg")
ZIP_GetFileInfo("music.zip",Index,mzfi.unz_file_info)
Result = ZIP_CatchFile("music.zip",Index)

CreateFile(0,"test.ogg")
WriteData(0,Result,mzfi\uncompressed_size)
CloseFile(0)
Mit der kleineren Datei klappt es aber. Warum?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten