SQX-Archivformat für PB?

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

SQX-Archivformat für PB?

Beitrag 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. :wink:
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
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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")
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Genial! Danke! :D

Wenn man man irgendwie die Entpacker-Routinen extrahieren kann, wäre es eine Überlegung wert, ob man das vielleicht in EasySetup integrieren könnte. :mrgreen:
(Muss wohl doch mal C++ lernen.)
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Ich bekomme bei dem Beispiel immer einen 'Invalid Memory Access':

Code: Alles auswählen

SqxDoneArcFileList(hArchive, hFileMaskList)
Hast du eine Idee, woran das liegen könnte?
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Thorsten1867 hat geschrieben:Ich bekomme bei dem Beispiel immer einen 'Invalid Memory Access':

Code: Alles auswählen

SqxDoneArcFileList(hArchive, hFileMaskList)
Hast du eine Idee, woran das liegen könnte?
Da mein Beispiel bei allen anderen zu funktionieren scheint, gibts nur 2 Möglichkeiten :wink:
1. Du hast einen Fehler eingebaut
2. Deine PB Version ist nicht aktuell oder akkurat.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

ts-soft hat geschrieben:Da mein Beispiel bei allen anderen zu funktionieren scheint, gibts nur 2 Möglichkeiten :wink:
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. :cry:
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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/
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Ändert leider nichts.
Als Unicode-Exe funktioniert es aber scheinbar.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Antworten