Page 34 of 40
Posted: Sat Apr 11, 2009 5:54 pm
by QuimV
Hi,
I'm using PB4.3 and when I execute the next code with the "create Threadsafe executable" flag activated, i get an error message.
Code: Select all
MyZIP.s = "c:\tmp\test.zip"
MyFilesToZIP.s = "c:\tmp\test.pb"
MyZIPOutPut.s = "c:\tmp\"
; Create archive
Debug PureZIP_AddFiles(MyZIP, MyFilesToZIP, #PureZIP_StorePathAbsolute, #PureZIP_Recursive)
; Extract files from archive
Debug PureZIP_ExtractFiles(MyZIP, "*.*", MyZIPOutPut, #True)
; Count files in archive
Debug PureZIP_GetFileCount(MyZIP)
; Add memory bank to archive
Debug PureZIP_AddMemory(MyZIP, "MemoryTest.txt", @MyZIP, Len(MyZIP))
; On file more in archive :
Debug PureZIP_GetFileCount(MyZIP)
Error Message:
POLINK: error: Unresolved external symbol '_PB_StringBasePosition'.
What am I doing wrong?
Thanks in advanced
Posted: Sat Apr 11, 2009 6:58 pm
by drgolf
Compiler options, Subsystems :
UserLibThreadSafe
UserLibUnicode
UserLibUnicodeThreadSafe
Posted: Wed Apr 15, 2009 11:14 am
by gnozal
drgolf wrote:Compiler options, Subsystems :
UserLibThreadSafe
UserLibUnicode
UserLibUnicodeThreadSafe
Exactly.
PureZIP.chm wrote:This library exists in several versions :
- the standard version, located in %Purebasic%\PureLibraries\UserLibraries\ ;
- the thread-safe version, located in %Purebasic%\SubSystems\UserLibThreadSafe\PureLibraries\ .
- the unicode version, located in %Purebasic%\SubSystems\UserLibUnicode\PureLibraries\ .
- the unicode + thread-safe version, located in %Purebasic%\SubSystems\UserLibunicodeThreadSafe\PureLibraries\ .
In order to use this library in thread-safe mode (compiler option /THREAD), you have to enable the subsystem 'UserLibThreadSafe'
in the PB IDE, or add '/SUBSYSTEM UserLibThreadSafe' to the PBCompiler arguments. In jaPBe, do nothing : it will automatically
enable the 'UserLibThreadSafe' subsystem to use the threadsafe versions of the installed userlibraries.
It's the same logic for unicode and unicode + thread-safe modes.
Posted: Mon Apr 20, 2009 2:51 pm
by Tranquil
Hi gnozal.
I maybe found a small problem with you zip userlib.
If I run the following code on my vista 64 Bot System (using PB x86 PB compiler) I always get a "BING!" sound if I click on an item inside the listview.
Sure, I don't use and ZIP command in this small snippet, but the problem does not occure if I remove the userlib from PB (and I only have installed your zip lib!).
Need to compile with Unicode + ThreadSave and WITHOUT XP Skinning support. If skinning support is enabled the problem does NOT occur.
So I believe its a problem with your lib, but maybe this can be a PB bug too, it can not proof. maybe you have an idea and confirm?
Code: Select all
#Main = 0
#MDIChild = 1
If OpenWindow(#Main, 0, 0, 400, 300, "MDIGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget)
If CreateMenu(#Main, WindowID(#Main))
MenuTitle("Menu index 0")
MenuTitle("MDI windows menu")
MenuItem(0, "self created item")
MenuItem(1, "self created item")
MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize)
AddGadgetItem(0, #MDIChild, "Child-Fenster")
AddGadgetItem(idMDI_Main,#PB_Any,"zugzuuz")
tt=ListIconGadget(#PB_Any,0,0,200,200,"zgu",100)
AddGadgetItem(tt,-1,"gzugugzu")
; add gadgets here...
UseGadgetList(WindowID(#Main)) ; wir gehen zurück zur Gadgetliste des Hauptfensters
EndIf
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Thanks!
Posted: Mon Apr 20, 2009 3:02 pm
by gnozal
Tranquil wrote:Hi gnozal.
I maybe found a small problem with you zip userlib.
If I run the following code on my vista 64 Bot System (using PB x86 PB compiler) I always get a "BING!" sound if I click on an item inside the listview.
After
the beep on Windows 7, the bing with Vista 64

Do I understand correctly : the problem occurs even if you don't use PureZIP in your code ?
Is there any sign of ZLIB in the final EXE ?
Posted: Mon Apr 20, 2009 3:13 pm
by Tranquil
Yes, the problem occures even if I dont use your ZIP commands.
If you want I can upload the same snipped that Ive posted here so that you can take a look on the exe.
Didnt know that this problem was also on Windows 7. As I wrote, it only occurs when XP Skinning is disabled.
EDIT:
http://rapidshare.com/files/223602597/Bing.exe
Thats my compiled version that makes shows the problem. Maybe its a PB bug? Dont know.
Posted: Mon Apr 20, 2009 3:48 pm
by gnozal
Tranquil wrote:Yes, the problem occures even if I dont use your ZIP commands.
If you want I can upload the same snipped that Ive posted here so that you can take a look on the exe.
ZLIB doesn't seem included in the EXE.
I really have no idea what the problem could be ... if PureZIP isn't used, how could it influence the compiled exe

?
NB : if I compile your code with Unicode + ThreadSave and WITHOUT XP Skinning support (jaPBe V3 + PB4.30 x86 + installed PureZIP on NT4), I get a different EXE :
http://rapidshare.com/files/223612425/bing2.zip.html ; could you test it ?
Posted: Mon Apr 20, 2009 4:19 pm
by Tranquil
That is mysterious. You exe also plays the BING sound on every click on the lists item.
EDIT: In my compiled exe I also have onError support enabled. Think thats the reason why it is a bit bigger then yours.
Posted: Sun Apr 26, 2009 2:03 am
by Tranquil
Me again:
Is it possible to send userdatas to a progression callback? I'm using many threads in my code, maybe there are more then one compression at a time with more then one progressbar. So I need to be able to send some userdatas to the progression callback to handle these. Is it possible to add this?
The Callback-Procedure then needs to be extended by a user value. (a pointer would be great)
Then those both commands needs to be enhanced with an optional parameter which holds the userdata that is send to the callback.
- PureZIP_ExtractFiles()
- PureZIP_AddFiles()
Edit:
And now I have another problem. If I add files to my archive using PureZIP_Archive_Create & #APPEND_STATUS_ADDINZIP in conjunction with PureZIP_Archive_Compress OR just PureZIP_AddFiles() I cant see my files after that with PureZip. If I use TotalCommander I can see my files. Ö.ö
Thanks for your great work!
Posted: Mon Apr 27, 2009 8:59 am
by gnozal
Tranquil wrote:Is it possible to send userdatas to a progression callback? Is it possible to add this?
It is possible, but it will break any existing code using callbacks because of this extra parameter.
I have uploaded a quickfix for you :
http://freenet-homepage.de/gnozal/PureZIP_V2_430.zip [libs for PB4.30 only]. Compression / decompression functions now expect an optional UserParam.
This UserParam is mandatory in the callback functions.
Code: Select all
Procedure MyCallback(FileName.s, Progression.f, UserParam.l)
; FileName : current processed file (if applicable)
; UserParam : some (optional) user parameter
; Progression : progression percentage
ProcedureReturn #False
; ProcedureReturn #True to stop the compression
EndProcedure
Could you test it ?
Tranquil wrote:And now I have another problem. If I add files to my archive using PureZIP_Archive_Create & #APPEND_STATUS_ADDINZIP in conjunction with PureZIP_Archive_Compress OR just PureZIP_AddFiles() I cant see my files after that with PureZip. If I use TotalCommander I can see my files.
Hmm...
This code works here :
Code: Select all
; Create new zip
If PureZIP_Archive_Create("c:\purebasic430\program\test.zip", #APPEND_STATUS_CREATE)
PureZIP_Archive_Compress("c:\PureBasic430\Help\PureWCX.chm", #False)
PureZIP_Archive_Compress("c:\PureBasic430\Help\PureRESIZE.chm", #False)
PureZIP_Archive_Close()
EndIf
; Append files to existing zip
If PureZIP_Archive_Create("c:\purebasic430\program\test.zip", #APPEND_STATUS_ADDINZIP)
PureZIP_Archive_Compress("c:\PureBasic430\Help\PureCOLOR.chm", #False)
PureZIP_Archive_Compress("c:\PureBasic430\Help\PureCAB.chm", #False)
PureZIP_Archive_Close()
EndIf
; List zip content
myFileinfo.PureZIP_FileInfo
If PureZIP_Archive_Read("c:\purebasic430\program\test.zip")
ReturnValue.l = PureZIP_Archive_FindFirst() = #UNZ_OK
While ReturnValue = #UNZ_OK
PureZIP_Archive_FileInfo(@myFileinfo)
Debug "Filename: " + myFileinfo\FileName
Debug "Compressed Size: " + Str(myFileinfo\CompressedSize)
Debug "Uncompressed Size: "+ Str(myFileinfo\unCompressedSize)
ReturnValue = PureZIP_Archive_FindNext()
Wend
PureZIP_Archive_Close()
EndIf
PureZIP sees all 4 archived files.
Posted: Mon Apr 27, 2009 12:30 pm
by Tranquil
You are great gnozal!!! I will try asap! Thanks a lot!
Posted: Mon Apr 27, 2009 1:05 pm
by endo
hi, PureZIP_ExtractFiles returns zero even it extract files correctly? I'm using the latest purezip from
with PB 4.30 registered, no multitreaded, no unicode.
extracted files are ok.
Posted: Mon Apr 27, 2009 1:18 pm
by gnozal
endo wrote:hi, PureZIP_ExtractFiles returns zero even it extract files correctly? I'm using the latest purezip from
with PB 4.30 registered, no multitreaded, no unicode.
extracted files are ok.
Oops, forgot some ProcedureReturn in this build ... fixing ...
Posted: Mon Apr 27, 2009 1:20 pm
by endo
gnozal wrote:endo wrote:hi, PureZIP_ExtractFiles returns zero even it extract files correctly? I'm using the latest purezip from
with PB 4.30 registered, no multitreaded, no unicode.
extracted files are ok.
Oops, forgot some ProcedureReturn in this build ... fixing ...
wow, u r fast! I'm waiting thx

Posted: Mon Apr 27, 2009 1:26 pm
by gnozal
endo wrote:wow, u r fast! I'm waiting thx

... should be fixed (same link).