Just for fun...

Just starting out? Need help? Post your questions and find answers here.
User avatar
Michael Vogel
Addict
Addict
Posts: 2680
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Just for fun...

Post by Michael Vogel »

What minimum changes have to be done with the following code to work also in unicode mode?

Code: Select all

Macro D:Data.s:EndMacro:R=?S:T=R:Repeat:L=MemoryStringLength(R):PokeS(T,PeekS(R)):T+L:R+L+1:Until R>=?E:M=MemoryStringLength(?S):R=AllocateMemory(M):If R:B=Base64Decoder(?S,M,R,M):Z=3827
If B:X=AllocateMemory(Z):F.s=SaveFileRequester("Save file","test.txt","All (*.*)",0):If F And UseZipPacker() And UncompressMemory(R,B,X,Z,1)=Z:CreateFile(0,F):WriteData(0,X,Z):EndIf:EndIf:EndIf
DataSection
S:
D"eJyVl11uIyEMx98r9Q5IfSB5GHOBrdRrrGQJDsLhi20+jCFkOto0ZOb399jGBta5mxd8ftxFnUuFvskD/MFyusXetfjOWoJbZIwxAUIIb6xd1wXlc6QC/0U4Y6F+44nKBCJjJwq/vwN9yvBoLP348q8kt0SxAyk0vkDdfK4k+Pmno+zGNXfB/M5uGwoYrMmWYPIL82dQeUv3N8GDH2UCPk52wuqyGCwRx2LLl09Xh/4y7dKcLmDnEAWLmyAM71ve"
D"cA6yK2A4IE70BNTbMU6K5r9YrXQyAT5lyJF3H5HNo03w5d08aw9V3zxCO3dO2WCvcBTLQ4S2eqxCvUS8XQV0J3JVS+RsM4T6xJSxWJZg6EosIWfCoyrWN4ybnM86JQketFj4p/SULXAJJC19U36QT2HYU+rcGw38q3pHreXpoio9CNz/NhDJGQc9i6Mal4ZuVNKTPvjX7doGMAne88LinocxAcMf3UszzxmkbMC0EirBtND1Og+Gwy2ezfdweke3"
D"p/zwp91IxSvcwI1GcwMzbCb1Bbwke8+tG82W2+xHDOgVF/fbVqqdKGDxH1/sbtkI8oKNlY7G9c25FfVS7a0Xru5BjHWt2MD6jDG91KJbamvz3hFpGLh2Xp3ghtsdRffyeAZgn/WHQdJ00bLhaD+kwedHan2DjfpyTMaaUiljotlmGn1GbLnq0PGwu0KJifWa6C91jYqIev2xac64Svllsq2LkbBVGo19bXZtf9nprHjShT8pQv2+zJEUzkLw/zg7"
D"sWa/pucUWKn/y2NvLOmGLPPzOh5Tldwn9/HWWDOtsmXDrkHVdmw8rR1Ula30lv8FZapLLs5moxWpOnHNLVmWL8a7siiknFmr2krrStZKK4FT2uE17TaeYiMxqkSzhP8oYRzHFEmIVlFAopmU8wmsnim1zNU3KKk9JMU+SdV9JRgnVSctpDOmcY7K5xXSoN+vtZJt/wuZiEZK"
E:
EndDataSection
infratec
Always Here
Always Here
Posts: 6883
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Re: Just for fun...

Post by infratec »

Hm, I don't use such old PB versions :mrgreen:

Maybe:

Code: Select all

PokeS(T,PeekS(R, L, #PB_Ascii))
Maybe:

Code: Select all

PokeS(T,PeekS(R, L, #PB_Ascii), -1, #PB_Ascii)
wilbert
PureBasic Expert
PureBasic Expert
Posts: 3870
Joined: Sun Aug 08, 2004 5:21 am
Location: Netherlands

Re: Just for fun...

Post by wilbert »

It's easier to use !db in the DataSection since that will give ascii data even on the unicode of PureBasic.
The code below works on PB 5.62. On earlier versions you have to rename Base64DecoderBuffer.

Code: Select all

M=?E-?S:R=AllocateMemory(M):If R:B=Base64DecoderBuffer(?S,M,R,M):Z=3827
If B:X=AllocateMemory(Z):F.s=SaveFileRequester("Save file","test.txt","All (*.*)",0):If F And UseZipPacker() And UncompressMemory(R,B,X,Z,1)=Z:CreateFile(0,F):WriteData(0,X,Z):EndIf:EndIf:EndIf
DataSection
S:
!db 'eJyVl11uIyEMx98r9Q5IfSB5GHOBrdRrrGQJDsLhi20+jCFkOto0ZOb399jGBta5mxd8ftxFnUuFvskD/MFyusXetfjOWoJbZIwxAUIIb6xd1wXlc6QC/0U4Y6F+44nKBCJjJwq/vwN9yvBoLP348q8kt0SxAyk0vkDdfK4k+Pmno+zGNXfB/M5uGwoYrMmWYPIL82dQeUv3N8GDH2UCPk52wuqyGCwRx2LLl09Xh/4y7dKcLmDnEAWLmyAM71ve'
!db 'cA6yK2A4IE70BNTbMU6K5r9YrXQyAT5lyJF3H5HNo03w5d08aw9V3zxCO3dO2WCvcBTLQ4S2eqxCvUS8XQV0J3JVS+RsM4T6xJSxWJZg6EosIWfCoyrWN4ybnM86JQketFj4p/SULXAJJC19U36QT2HYU+rcGw38q3pHreXpoio9CNz/NhDJGQc9i6Mal4ZuVNKTPvjX7doGMAne88LinocxAcMf3UszzxmkbMC0EirBtND1Og+Gwy2ezfdweke3'
!db 'p/zwp91IxSvcwI1GcwMzbCb1Bbwke8+tG82W2+xHDOgVF/fbVqqdKGDxH1/sbtkI8oKNlY7G9c25FfVS7a0Xru5BjHWt2MD6jDG91KJbamvz3hFpGLh2Xp3ghtsdRffyeAZgn/WHQdJ00bLhaD+kwedHan2DjfpyTMaaUiljotlmGn1GbLnq0PGwu0KJifWa6C91jYqIev2xac64Svllsq2LkbBVGo19bXZtf9nprHjShT8pQv2+zJEUzkLw/zg7'
!db 'sWa/pucUWKn/y2NvLOmGLPPzOh5Tldwn9/HWWDOtsmXDrkHVdmw8rR1Ula30lv8FZapLLs5moxWpOnHNLVmWL8a7siiknFmr2krrStZKK4FT2uE17TaeYiMxqkSzhP8oYRzHFEmIVlFAopmU8wmsnim1zNU3KKk9JMU+SdV9JRgnVSctpDOmcY7K5xXSoN+vtZJt/wuZiEZK'
E:
EndDataSection
Windows (x64)
Raspberry Pi OS (Arm64)
User avatar
Michael Vogel
Addict
Addict
Posts: 2680
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: Just for fun...

Post by Michael Vogel »

Thanks, yes, I know, 5.46 is quite old as Fred will bring us 5.71 within few weeks :lol:

Played arounf with #PB_ASCII before, but this is a little bit tricky, so Wilbert's tip is perfect for me 8)

Two remarks:
1. Will add something like...

Code: Select all

CompilerIf #PB_Compiler_Version>555 : Macro Base64Decoder(a,b,c,d) : Base64DecoderBuffer(a,b,c,d) : EndMacro : CompilerEndIf
2. not sure 'bout TAR, found different statements in the forum, seems that compressing isn't supported under Windows, right?

Code: Select all

DataSection
	S:
	!db '......................................................................................................................................'
	E:
EndDataSection

UseZipPacker()
UseLZMAPacker()
UseTARPacker()
UseBriefLZPacker()

*B=AllocateMemory(1000)
For i=1 To 4
	Debug CompressMemory(?S,?E-?S,*B,1000,i)
Next
Post Reply