Page 1 of 1

New source for unpack packed files in 3.90

Posted: Wed Apr 28, 2004 7:00 pm
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.

Posted: Thu Apr 29, 2004 3:30 pm
by Wolf
Can't edit this source anybody?

Posted: Fri Apr 30, 2004 7:50 am
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 :wink:

Posted: Fri Apr 30, 2004 2:35 pm
by Wolf
Very thanks Jose but when compile view this error : :?

Code: Select all

"AllocateMemory () :Incorrect number of of parameters."  :?


Posted: Fri Apr 30, 2004 6:10 pm
by Jose
Need to be using version PB 3.90

Posted: Fri Apr 30, 2004 9:01 pm
by omid-xp
Ok i can compile it but when run it view error about fail in read of memory.

What is problem?