Just starting out? Need help? Post your questions and find answers here.
-
Wolf
- Enthusiast

- Posts: 232
- Joined: Sat Apr 03, 2004 12:00 pm
- Location: S.T
Post
by Wolf »
I find one code but it's old and not work for unpack files in PB 3.90.
It's code:
Code: Select all
Procedure UncompressFile(FileName$)
If ReadFile(0, FileName$)
FileLength = Lof()
FileSeek(FileLength-4)
OriginalLenght=ReadLong()
If FileLength And AllocateMemory(0, FileLength , 0) And AllocateMemory(1, OriginalLenght+4, 0)
FileSeek(0)
ReadData(UseMemory(0), FileLength) ; Read the whole file in the memory buffer
StartTimer = GetTickCount_()
DecompressedLength = UnpackMemory(UseMemory(0), UseMemory(1))
If DecompressedLength = OriginalLenght
OpenFile(1,"Temp.unpack")
WriteData(UseMemory(1),DecompressedLength)
CloseFile(1)
DecompressionTime = GetTickCount_()-StartTimer
MessageRequester("Info", "Decompression succeded:"+Chr(10)+Chr(10)+"Old size: "+Str(FileLength)+Chr(10)+"New size:"+Str(DecompressedLength)+Chr(10)+"Decompression Time: "+Str(DecompressionTime)+" ms", #MB_ICONINFORMATION)
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
Else
ProcedureReturn 0
EndIf
Else
ProcedureReturn 0
EndIf
EndProcedure
If UncompressFile(OpenFileRequester("Choose a file to uncompress", "", "*.*", 0)) = 0
MessageRequester("Info", "Something went wrong", #MB_ICONINFORMATION)
EndIf
End
Can anybody edit this source code for work in PB 3.90 ?
Thanks.
Last edited by
Wolf on Thu Apr 29, 2004 3:31 pm, edited 1 time in total.
-
Wolf
- Enthusiast

- Posts: 232
- Joined: Sat Apr 03, 2004 12:00 pm
- Location: S.T
Post
by Wolf »
Can't edit this source anybody?
-
Jose
- User

- Posts: 34
- Joined: Sat Apr 26, 2003 9:20 pm
Post
by Jose »
Try this edit
Code: Select all
Procedure UncompressFile(FileName$)
Protected lMemOne.l, lMemTwo.l
If ReadFile(0, FileName$)
FileLength = Lof()
FileSeek(FileLength-4)
OriginalLenght=ReadLong()
*lMemOne = AllocateMemory(FileLength)
If *lMemOne <> 0
*lMemTwo = AllocateMemory(OriginalLenght+4)
If *lMemTwo <> 0
If FileLength
FileSeek(0)
ReadData(*lMemOne, FileLength) ; Read the whole file in the memory buffer
StartTimer = GetTickCount_()
DecompressedLength = UnpackMemory(*lMemOne, *lMemTwo)
If DecompressedLength = OriginalLenght
OpenFile(1,"Temp.unpack")
WriteData(*lMemTwo,DecompressedLength)
CloseFile(1)
DecompressionTime = GetTickCount_()-StartTimer
MessageRequester("Info", "Decompression succeded:"+Chr(10)+Chr(10)+"Old size: "+Str(FileLength)+Chr(10)+"New size:"+Str(DecompressedLength)+Chr(10)+"Decompression Time: "+Str(DecompressionTime)+" ms", #MB_ICONINFORMATION)
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
Else
ProcedureReturn 0
EndIf
Else
ProcedureReturn 0
EndIf
EndIf
EndIf
EndProcedure
If UncompressFile(OpenFileRequester("Choose a file to uncompress", "", "*.*", 0)) = 0
MessageRequester("Info", "Something went wrong", #MB_ICONINFORMATION)
EndIf
End
Have not tested it

-
Wolf
- Enthusiast

- Posts: 232
- Joined: Sat Apr 03, 2004 12:00 pm
- Location: S.T
Post
by Wolf »
Very thanks Jose but when compile view this error :
Code: Select all
"AllocateMemory () :Incorrect number of of parameters." :?
-
Jose
- User

- Posts: 34
- Joined: Sat Apr 26, 2003 9:20 pm
Post
by Jose »
Need to be using version PB 3.90
-
omid-xp
- Enthusiast

- Posts: 119
- Joined: Tue Jan 27, 2004 2:17 pm
Post
by omid-xp »
Ok i can compile it but when run it view error about fail in read of memory.
What is problem?