Check for spaces in a directory path: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
(→The Function: update: smaller and thus faster code) |
|||
Line 61: | Line 61: | ||
IntOp $R1 $R1 - 1 | IntOp $R1 $R1 - 1 | ||
StrCmp $R2 "" done | StrCmp $R2 "" done | ||
StrCmp $R2 " " | StrCmp $R2 " " 0 loop | ||
IntOp $R0 $R0 + 1 | IntOp $R0 $R0 + 1 | ||
Goto loop | Goto loop |
Revision as of 18:51, 13 January 2006
Author: Afrow UK (talk, contrib) |
Description
This script will check a string (or directory path) for spaces and returns the number of spaces found in the string.
Updated 12th January 2005
Usage
Non-MUI
Page Directory "" "" "DirectoryLeave"
MUI
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE "DirectoryLeave" !insertmacro MUI_PAGE_DIRECTORY
DirectoryLeave Function
Function DirectoryLeave # Call the CheckForSpaces function. Push $INSTDIR Call CheckForSpaces Pop $R0 # Check if any spaces exist in $INSTDIR. StrCmp $R0 0 NoSpaces # Plural if more than 1 space in $INSTDIR. StrCmp $R0 1 0 +3 StrCpy $R1 "" Goto +2 StrCpy $R1 "s" # Show message box then take the user back to the Directory page. MessageBox MB_OK|MB_ICONEXCLAMATION "Error: The Installaton directory \ has $R0 space$R1.$\nPlease remove the space$R1." Abort NoSpaces: FunctionEnd
The Function
Function CheckForSpaces Exch $R0 Push $R1 Push $R2 Push $R3 StrCpy $R1 -1 StrCpy $R3 $R0 StrCpy $R0 0 loop: StrCpy $R2 $R3 1 $R1 IntOp $R1 $R1 - 1 StrCmp $R2 "" done StrCmp $R2 " " 0 loop IntOp $R0 $R0 + 1 Goto loop done: Pop $R3 Pop $R2 Pop $R1 Exch $R0 FunctionEnd
-Stu