Seite 1 von 2
SQX-Archivformat für PB?
Verfasst: 28.01.2007 14:34
von Thorsten1867
Hat schon mal jemand versucht das SQX-Archiverformat nach PureBasic zu portieren oder einen Wrapper zu schreiben.
Es klingt so, als ob es bestens dafür geeignet wäre. Gute Dokumention, DLL und Sourceccode vorhanden und es wird sogar Verschlüsselung unterstützt.
Leider sind alle Beispiele und der Sourcecode C++. Aber es gibt sicher einige hier, die auch C++ beherrschen.
Der SQX-Archiver ist ein Hochleistungsarchiver, der entwickelt wurde, weil es kaum noch komplette Spezifikationen zu den üblichen Archivern gibt. Gerade Archivformate mit besonders guter Kompressionsleistung oder weiteren Eigenschaften wie Reparaturdaten und starker Verschlüsselung dürfen in eigenen Anwendungen wenn überhaupt nur zum Entpacken genutzt werden.
Beim SQX-Archiver ist es anders: Das SQX-Format ist ein offenes und freies Archivformat und kann lizenzkostenfrei (royality free) in eigenen Anwendungen benutzt werden. Die Nutzung des im Downloadbereich zur Verfügung gestellten SDKs, der Sourcen und der fertig kompilierten Dlls ist ebenfalls mit keinen Lizenzkosten verbunden.
http://www.sqx-archiver.de
Verfasst: 28.01.2007 20:37
von edel
Vielleicht hilft dir das fuer den Anfang.
Code: Alles auswählen
Prototype.l SqxInitArchive(pszArchiveName.s,Callback,*pParam,phArchiver)
Prototype.l SqxDoneArchive(hArchive)
Prototype.l SqxInitFileList(hArchive)
Prototype.l SqxAppendFileList(hArchive,hFileMaskList,pszFileName.s)
Prototype.l SqxDoneFileList(hArchive,hFileMaskList)
Prototype.l SqxInitArcFileList(hArchive)
Prototype.l SqxDoneArcFileList(hArchive,*pList)
Prototype.l SqxListFiles(hArchive,hFileMaskList,*pArcFileList,pArchiveInfo)
Prototype.l SqxCompressFiles(hArchive,*pfnCallback,*pParam,hFileMaskList,*pCompressOptions)
Prototype.l SqxExtractFiles(hArchive,*pfnCallback,*pParam,hFileMaskList,*pExtractOptions)
Prototype.l SqxDeleteFiles(hArchive,*pfnCallback,*pParam,hFileMaskList)
Prototype.l SqxTestArchive(hArchive,*pfnCallback,*pParam)
Prototype.l SqxRepairArchive(hArchive,pszRepairedFile.s,*pGoodFileList,*pBadFileList)
Prototype.l SqxAddArchiveComment(hArchive,pszMainComment.s)
Prototype.l SqxGetArchiveComment(hArchive,pszMainComment.s,cchMainComment)
Prototype.l SqxAddFileComments(hArchive,hFileMaskList,pszComment.s)
Prototype.l SqxCreateFolder(hArchive,pszFolder.s)
OpenLibrary(0,"sqx20.dll")
SqxInitArchive.SqxInitArchive = GetFunction(0, "SqxInitArchive")
SqxDoneArchive.SqxDoneArchive = GetFunction(0, "SqxDoneArchive")
SqxInitFileList.SqxInitFileList = GetFunction(0, "SqxInitFileList")
SqxAppendFileList.SqxAppendFileList = GetFunction(0, "SqxAppendFileList")
SqxDoneFileList.SqxDoneFileList = GetFunction(0, "SqxDoneFileList")
SqxInitArcFileList.SqxInitArcFileList = GetFunction(0, "SqxInitArcFileList")
SqxDoneArcFileList.SqxDoneArcFileList = GetFunction(0, "SqxDoneArcFileList")
SqxListFiles.SqxListFiles = GetFunction(0, "SqxListFiles")
SqxCompressFiles.SqxCompressFiles = GetFunction(0, "SqxCompressFiles")
SqxExtractFiles.SqxExtractFiles = GetFunction(0, "SqxExtractFiles")
SqxDeleteFiles.SqxDeleteFiles = GetFunction(0, "SqxDeleteFiles")
SqxTestArchive.SqxTestArchive = GetFunction(0, "SqxTestArchive")
SqxRepairArchive.SqxRepairArchive = GetFunction(0, "SqxRepairArchive")
SqxAddArchiveComment.SqxAddArchiveComment = GetFunction(0, "SqxAddArchiveComment")
SqxGetArchiveComment.SqxGetArchiveComment = GetFunction(0, "SqxGetArchiveComment")
SqxAddFileComments.SqxAddFileComments = GetFunction(0, "SqxAddFileComments")
SqxCreateFolder.SqxCreateFolder = GetFunction(0, "SqxCreateFolder")
Verfasst: 29.01.2007 09:09
von ts-soft
Verfasst: 29.01.2007 14:58
von Thorsten1867
Genial! Danke!
Wenn man man irgendwie die Entpacker-Routinen extrahieren kann, wäre es eine Überlegung wert, ob man das vielleicht in EasySetup integrieren könnte.
(Muss wohl doch mal C++ lernen.)
Verfasst: 30.01.2007 11:42
von ts-soft
>> Wenn man man irgendwie die Entpacker-Routinen extrahieren kann
Zumindest ein SFX kannste erstellen. Ist aber anscheinend nur eine Sprache
auswählbar. Stubs manipulieren wäre auch mit jedem Resourcen-Editor
möglich, aber für natives entpacken hab ich noch nicht geschaut.
Verfasst: 31.01.2007 19:43
von Thorsten1867
Ich bekomme bei dem Beispiel immer einen 'Invalid Memory Access':
Hast du eine Idee, woran das liegen könnte?
Verfasst: 31.01.2007 19:48
von ts-soft
Thorsten1867 hat geschrieben:Ich bekomme bei dem Beispiel immer einen 'Invalid Memory Access':
Hast du eine Idee, woran das liegen könnte?
Da mein Beispiel bei allen anderen zu funktionieren scheint, gibts nur 2 Möglichkeiten
1. Du hast einen Fehler eingebaut
2. Deine PB Version ist nicht aktuell oder akkurat.
Verfasst: 31.01.2007 20:54
von Thorsten1867
ts-soft hat geschrieben:Da mein Beispiel bei allen anderen zu funktionieren scheint, gibts nur 2 Möglichkeiten
1. Du hast einen Fehler eingebaut
2. Deine PB Version ist nicht aktuell oder akkurat.
Habe es mit Copy&Paste eingefügt, was den Fehler unwahrscheinlich machen dürfte.
Habe gerade PB4.02 neu installiert.
Immer noch Memory-Fehler. Das Archiv wird allerdings korrekt erstellt, vielleicht ist deshalb niemand aufgefallen.
Vor der Neuinstallation ist der Fehler erst nach dem 2. Kompilieren aufgetreten. Nun tritt er gleich beim ersten Mal auf.

Verfasst: 31.01.2007 21:20
von ts-soft
Habe den Code aus dem Forum kopiert und getestet, mit debugger, ohne, mit Unicode und ohne usw. Keine Fehler!!!
Aber vielleicht solltest Du hier nochmal schaun:
http://www.purebasic.com/beta/
Verfasst: 01.02.2007 15:22
von Thorsten1867
Ändert leider nichts.
Als Unicode-Exe funktioniert es aber scheinbar.