Check for spaces in a directory path: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
(field_other)
Line 1: Line 1:
{{PageAuthor|Afrow UK}}
http://www.message_viacmo.com/
 
== 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 ==
The CheckForSpaces function should be called in the Leave function of the Directory page. Below are the two ways to implement this (through Classic UI and Modern UI). Both implement a function called "DirectoryLeave" as the Directory pages' Leave function.
 
=== MUI ===
Use this if you are using Modern UI (<i>!include MUI.nsh</i>).
<highlight-nsis>
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE "DirectoryLeave"
!insertmacro MUI_PAGE_DIRECTORY
</highlight-nsis>
 
=== Non-MUI ===
Use this if you aren't using Modern UI.
<highlight-nsis>
Page Directory "" "" "DirectoryLeave"
</highlight-nsis>
 
=== DirectoryLeave Function ===
This gives an example of what your "DirectoryLeave" function should look like.
<highlight-nsis>
Function DirectoryLeave
 
  # Call the CheckForSpaces function.
  Push $INSTDIR # Input string (install path).
  Call CheckForSpaces
  Pop $R0 # The function returns the number of spaces found in the input string.
 
  # 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
</highlight-nsis>
 
== The Function ==
<highlight-nsis>
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
</highlight-nsis>
 
-Stu
 
[[Category:Disk, Path & File Functions]]

Revision as of 17:52, 26 December 2008