Simpler Dateipacker.

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Matthias

Betreff: Simpler Dateipacker.

BeitragDo, Sep 30, 2010 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay. Weil ich im Forum ein Thema über Datein packen gelesen, habe ich schnell mal was in dieser richtung Programmiert vieleicht kann es jemand gebrauchen.

Es werden Datein in einer Bank geladen und diese wird dann als Gesammtpack gespeichert.

Beim auslesen wird eine Tmp datei gespeichert die mann dann ganz nochmal laden kann.

Code: [AUSKLAPPEN]

Graphics 800,600,32,2
Global DataPack
Timer=CreateTimer(60)
;------Pack erzeugen----------------------
;AddToDataPack("Datein\","BaseIcon.png")
;AddToDataPack("Datein\","Arial.bmp")
;AddToDataPack("Datein\","StadtIcon.png")
;AddToDataPack("Datein\","EditBrush.png")
;AddToDataPack("Datein\","Map1.png")
;SaveDataPack("MeinPack")

;------Pack benutzen--------------------------
;LoadDataPack("MeinPack")
;ImageA=LoadImage(FromDPack("StadtIcon.png"))
;ImageB=LoadImage(FromDPack("BaseIcon.png"))
;DeleteFile("Tmp")

Repeat
   If ImageA<>0 Then DrawBlock ImageA,10,10
   If ImageB<>0 Then DrawBlock ImageB,100,10
   Flip 0:WaitTimer(Timer)
Until KeyDown(1) End

Function FromDPack$(Name$)
   Repeat P=P+30 For I=0 To Len(Name)-1
      Select PeekByte(DataPack,P+I+8)
         Case Asc(Mid(Name,I+1,1)) Default Exit
      End Select
   Next:Until I=Len(Name)

   File=WriteFile("Tmp"):Ofset=PeekInt(DataPack,P+4)
   WriteBytes(DataPack,File,Ofset,PeekInt(DataPack,P))
   CloseFile(File) Return "Tmp"
End Function



Function AddToDataPack(Pfad$,Name$)
   If DataPack=0 Then DataPack=CreateBank(3000)
   Repeat P=P+30 Until PeekInt(DataPack,P)=0
   
   FSize=FileSize(Pfad+Name) If FSize=0 Then Return
   For I=0 To Len(Name)-1
      PokeByte(DataPack,P+8+I,Asc(Mid(Name,I+1,1)))
   Next

   BSize=BankSize(DataPack):File=ReadFile(Pfad+Name)   
   PokeInt(DataPack,P,FSize):PokeInt(DataPack,P+4,BSize)
   ResizeBank(DataPack,BSize+FSize)
   ReadBytes(DataPack,File,BSize,FSize):CloseFile(File)
End Function

Function SaveDataPack(Name$)
   File=WriteFile(Name$) BSize=BankSize(DataPack)
   WriteBytes(DataPack,File,0,BSize):CloseFile(File)
End Function

Function LoadDataPack(Name$)
   BSize=FileSize(Name) File=ReadFile(Name)   
   DataPack=CreateBank(BSize)
   ReadBytes(DataPack,File,0,BSize):CloseFile(File)
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group