Seite 2 von 9

Verfasst: 17.02.2009 16:15
von Fluid Byte
ts-soft hat geschrieben:Wenn Du aber x64 benötigst oder Dir Sourcen lieber sind, nimm mein :wink:
Also erstmal, gutes "Verkaufsgespräch"! :mrgreen:

Zweitens, ich denke du gewinnst das Rennen. Fakt ist ich werde nicht mehr lange warten und mir demnächst einen neuen Rechner zulegen. Dieser wird auf jeden Fall eine 64Bit Maschine sein um 8GB Speicher nutzen zu können.

Wer nun in die Credits kommt hängt davon ab wer eher fertig bzw. da ist. Mein Spiel oder mein neuer Rechner. :lol:

Verfasst: 17.02.2009 16:24
von ts-soft
DrFalo hat geschrieben:Ei, Ei, Ei - ich nutze bis jetzt gnozals lib. Ist deine wirklich Mini? Ich brauch eigendlich nur die Ein- und Auspackfunktion. Mal schauen...
Ist wirklich mini :wink:
Wenn Du die UserLib von Gnozal entpackst und die Größe mit der statische
Lib von mir vergleichst, wirste sehen das es sehr Mini ist :mrgreen:

Da bei mir aber die restlichen Funktionen aus der zlib.lib von PB Importiert
werden, macht es im EndEffekt kaum Unterschied.

Die Vorteile liegen also nicht unbedingt bei mini, sondern eher bei:
Übersichtlicher, x64 möglich, keine SubSysteme, Sourcen verfügbar.

Gruß
Thomas

Verfasst: 17.02.2009 18:54
von ts-soft
Update

Globaler Zip-Kommentar kann hinzugefügt werden. Dies geschieht beim
schliessen mit ZIP_FileClose(ZipHandle[, Comment.s])

Comment kann ein String oder der Dateiname einer Textdatei sein.

Einfach die entsprechende Procedure durch diese:

Code: Alles auswählen

Procedure ZIP_FileClose(ZipHandle, Comment.s = "")
  Protected *mem, FF, Size
  If Comment <> ""
    If UCase(GetExtensionPart(Comment)) = "TXT" And FileSize(Comment) > 0
      FF = ReadFile(#PB_Any, Comment)
      If FF
        Size = Lof(FF)
        *mem = AllocateMemory(Size)
        If *mem
          ReadData(FF, *mem, Size)
        EndIf
        CloseFile(FF)
        If  *mem
          Comment = PeekS(*mem, -1, #PB_Ascii)
          FreeMemory(*mem)
        EndIf
      EndIf
    EndIf
    *mem = AllocateMemory(Len(Comment))
    If *mem
      PokeS(*mem, Comment, -1, #PB_Ascii)
    EndIf
  EndIf
  zipClose(ZipHandle, *mem)
  If *mem : FreeMemory(*mem) : EndIf
EndProcedure
ersetzen oder neu downloaden

Verfasst: 17.02.2009 23:06
von Fluid Byte
Mir ist gerade ein merkwürdiger Bug aufgefallen. Wenn man im Code UseOGGSoundDecoder() stehen hat funktioniert das Einlesen mittels ProgramFilename() als Archivdatei nicht mehr. Im folgenden Beispiel wird zweimal Null zurückgegeben (x86 Version):

Code: Alles auswählen

UseOGGSoundDecoder()

DataSection
	IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\skybox.zip"
EndDataSection

Index = ZIP_GetFileNumber(ProgramFilename(),"desert07_RT.jpg")
Debug ZIP_ExtractFile(ProgramFilename(),Index,GetTemporaryDirectory(),0)

Debug ZIP_CatchFile(ProgramFilename(),1)
Dieses Beispiel funktioniert wiederum tadellos:

Code: Alles auswählen

UseOGGSoundDecoder()

ArchiveFile$ = #PB_Compiler_Home + "Examples\Sources\Data\skybox.zip"

Index = ZIP_GetFileNumber(ArchiveFile$,"desert07_RT.jpg")
Debug ZIP_ExtractFile(ArchiveFile$,Index,GetTemporaryDirectory(),0)

Debug ZIP_CatchFile(ArchiveFile$,1)
Die PureZIP DLL von gnozal hat übrigens dasselbe Problem.

Verfasst: 17.02.2009 23:22
von ts-soft
Schalt den Debugger aus!

Gruß
Thomas

Verfasst: 17.02.2009 23:31
von Fluid Byte
Ist aus, geht nicht immer noch nicht.

Verfasst: 17.02.2009 23:37
von ts-soft

Code: Alles auswählen

XIncludeFile #PB_Compiler_Home + "include\minizip_include.pbi"

UseOGGSoundDecoder()

DataSection
   IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\skybox.zip"
EndDataSection

Index = ZIP_GetFileNumber(ProgramFilename(),"desert07_RT.jpg")
ZIP_ExtractFile(ProgramFilename(),Index,GetTemporaryDirectory(),0)

MessageRequester(Str(Index), Str(ZIP_CatchFile(ProgramFilename(),1)))
geht ohne debugger!
Messagerequester hat geschrieben:---------------------------
5
---------------------------
42928072
---------------------------
OK
---------------------------

Verfasst: 17.02.2009 23:45
von Fluid Byte
Es geht wenn man ebenfalls alle "Debug"-Aufrufe entfernt. Aber warum ist das nötig wenn der Debugger eh deaktiviert ist? Außerdem funktioniert das nur bei deiner minizip LIB, nicht aber bei gnozals PureZIP DLL.

Naja, sehr gute Arbeit Herr Schulz. :mrgreen:

Verfasst: 17.02.2009 23:47
von ts-soft
Funktionen, denen ein Debug voraus geht, werden ohne Debugger nicht
ausgeführt :mrgreen:

>> Naja, sehr gute Arbeit Herr Schulz. :mrgreen:
:allright: danke

Verfasst: 17.02.2009 23:52
von RSBasic
Von mir auch: Gute Arbeit :allright:
Sehr nützlich :allright: