Almost ready, just more docs, tutorial and some examples needed (I think).
See Examples\System.nsi for current examples (including System based Splash), Contrib\System\New System.Txt for short description, Contrib\System\WhatsNew.txt is here 🙂
WhatsNew:
1. Syntax, with inline input
2. Int64 full support (conversion/operations/comparison)
3. Structures support
4. Callbacks support, including multilevel callbacks
5. Some useful rountines (Alloc, Free, Copy)
6. CDecl and StdCall calling conventions
so the functionality is almost unlimited now.
P.S.s:
1. Remove old system from repository before posting a new one, please.
2. VC7 project only. I'll try to create VC6 project to final release.
System: near the second release
2 posts
New example
; Memory for paths
System::Alloc 1024
Pop $1
; Get drives
System::Call 'kernel32::GetLogicalDriveStringsA(i 1024, i r1) i'
enumok:
; One more drive?
System::Call 'kernel32::lstrlenA(i r1) i.r2'
IntCmp $2 0 enumex
; Drive space
System::Call 'kernel32::GetDiskFreeSpaceExA(i r1, *l .r3, *l .r4, *l .r5) i'
; Pretty KBs
System::Int64Op $3 / 1024
Pop $3
System::Int64Op $4 / 1024
Pop $4
System::Int64Op $5 / 1024
Pop $5
; Get pretty drive path string
System::Call '*$1(&t1024 .r6)'
; Message box
System::Call 'user32::MessageBoxA(i $HWNDPARENT,\\
t "Path: `$6`, Free for Caller: $3 kb, Free for All: $5 kb, Disk Size: $4 kb",\\
t "Disk spaces example", i 33) i.r0'
; User cancel?
IntCmp $0 2 enumex
; Next drive path
IntOp $1 $1 + $2
IntOp $1 $1 + 1
goto enumok
enumex: ; End of drives or user cancel
; Free memory for paths
System::Free $1 pretty php highlighting (kichik) 😁