Archive: System: near the second release


System: near the second release
  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.


New example
 


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) :D