Strip Leading Zeros
From NSIS Wiki
Jump to navigationJump to search
Description
Strings with a leading zero are treated as octal. So stripping zeros using IntOp won't work:
IntOp $v "00009" + 0
The Script
Name "TrimLeadingZeros" OutFile "TrimLeadingZeros.exe" ShowInstDetails show var gen Function TrimLeadingZerosCall Exch $R1 Push $R2 Loop: StrCpy $R2 "$R1" 1 StrCmp "$R2" "0" TrimLeft Goto Done TrimLeft: StrCpy $R1 "$R1" "" 1 Goto Loop Done: StrCmp $R1 "" 0 +2 StrCpy $R1 "0" Pop $R2 Exch $R1 FunctionEnd !macro TrimLeadingZeros NUM Push ${NUM} Call TrimLeadingZerosCall Pop ${NUM} !macroend !define TrimLeadingZeros `!insertmacro TrimLeadingZeros` Section "" StrCpy $gen "00009" ${TrimLeadingZeros} $gen DetailPrint "Already applied: |$gen|" StrCpy $gen "00000" ${TrimLeadingZeros} $gen DetailPrint "Already applied: |$gen|" SectionEnd
Output
Already applied: |9| Already applied: |0| Completed