I was wondering how I would change some text. Not really changing to much but more like adding to it. Here is an example of what I need to do.
The user would enter a word
Company
and the code would change it to
/C/o/m/p/a/n/y
I would know how to do this with something like java but I am still not to familiar with NSIS to be able to do this. I would appreciate any help... and some examples 🙂 thanks
changing text
6 posts
you need to loop through the string:
StrCpy $0 "Company" # set your custom string
StrCpy $1 "/" # set the character to insert
StrLen $2 $0 # get the length of your string to loop through it
StrCpy $3 "0" # init the loop counter
StrCpy $4 "" # init output var
loop: # begin of the loop
StrCpy $5 $0 1 $3 # copy one character of your string to a temp var (offset $3 counts up)
StrCpy $4 "$4$1$5" # add the character extracted and the one to insert everytime
IntOp $3 $3 + 1 # increase counter/offset
IntCmp $2 $3 end loop #stop the loop if end of string reached, else continue
end:
# at this stage, $4 will be "/C/o/m/p/a/n/y" Awesome thanks a lot 🙂 I do have one question though
I am having a problem running it twice in the same function. here is my code of what I am trying to do...
Function leaveRegEdit
ReadINIStr $6 "$PLUGINSDIR\Regedit.ini" "Field 1" "State"
ReadINIStr $7 "$PLUGINSDIR\Regedit.ini" "Field 2" "State"
StrCpy $0 "$6" # set your custom string
StrCpy $1 "/" # set the character to insert
StrLen $2 $0 # get the length of your string to loop through it
StrCpy $3 "0" # init the loop counter
StrCpy $4 "" # init output var
loop: # begin of the loop
StrCpy $5 $0 1 $3 # copy one character of your string to a temp var (offset $3 counts up)
StrCpy $4 "$4$1$5" # add the character extracted and the one to insert everytime
IntOp $3 $3 + 1 # increase counter/offset
IntCmp $2 $3 end loop #stop the loop if end of string reached, else continue
end:
# at this stage, $4 will be "/C/o/m/p/a/n/y"
Push "/I/I/M/S" #text to be replaced
Push $4 #replace with
Push all #replace all occurrences
Push all #replace all occurrences
Push "$INSTDIR\WARN\Dashboard\dashboard.properties" #file to replace in
Call AdvReplaceInFile
StrCpy $0 "$7" # set your custom string
StrCpy $1 "/" # set the character to insert
StrLen $2 $0 # get the length of your string to loop through it
StrCpy $3 "0" # init the loop counter
StrCpy $4 "" # init output var
loop: # begin of the loop
StrCpy $5 $0 1 $3 # copy one character of your string to a temp var (offset $3 counts up)
StrCpy $4 "$4$1$5" # add the character extracted and the one to insert everytime
IntOp $3 $3 + 1 # increase counter/offset
IntCmp $2 $3 end loop #stop the loop if end of string reached, else continue
end:
# at this stage, $4 will be "/C/o/m/p/a/n/y"
Push "/C/A/S/P/O/D" #text to be replaced
Push $4 #replace with
Push all #replace all occurrences
Push all #replace all occurrences
Push "$INSTDIR\WARN\Dashboard\dashboard.properties" #file to replace in
Call AdvReplaceInFile
FunctionEnd
I am having a problem running it twice in the same function. here is my code of what I am trying to do...
Function leaveRegEdit
ReadINIStr $6 "$PLUGINSDIR\Regedit.ini" "Field 1" "State"
ReadINIStr $7 "$PLUGINSDIR\Regedit.ini" "Field 2" "State"
StrCpy $0 "$6" # set your custom string
StrCpy $1 "/" # set the character to insert
StrLen $2 $0 # get the length of your string to loop through it
StrCpy $3 "0" # init the loop counter
StrCpy $4 "" # init output var
loop: # begin of the loop
StrCpy $5 $0 1 $3 # copy one character of your string to a temp var (offset $3 counts up)
StrCpy $4 "$4$1$5" # add the character extracted and the one to insert everytime
IntOp $3 $3 + 1 # increase counter/offset
IntCmp $2 $3 end loop #stop the loop if end of string reached, else continue
end:
# at this stage, $4 will be "/C/o/m/p/a/n/y"
Push "/I/I/M/S" #text to be replaced
Push $4 #replace with
Push all #replace all occurrences
Push all #replace all occurrences
Push "$INSTDIR\WARN\Dashboard\dashboard.properties" #file to replace in
Call AdvReplaceInFile
StrCpy $0 "$7" # set your custom string
StrCpy $1 "/" # set the character to insert
StrLen $2 $0 # get the length of your string to loop through it
StrCpy $3 "0" # init the loop counter
StrCpy $4 "" # init output var
loop: # begin of the loop
StrCpy $5 $0 1 $3 # copy one character of your string to a temp var (offset $3 counts up)
StrCpy $4 "$4$1$5" # add the character extracted and the one to insert everytime
IntOp $3 $3 + 1 # increase counter/offset
IntCmp $2 $3 end loop #stop the loop if end of string reached, else continue
end:
# at this stage, $4 will be "/C/o/m/p/a/n/y"
Push "/C/A/S/P/O/D" #text to be replaced
Push $4 #replace with
Push all #replace all occurrences
Push all #replace all occurrences
Push "$INSTDIR\WARN\Dashboard\dashboard.properties" #file to replace in
Call AdvReplaceInFile
FunctionEnd
Change your second "loop:" to "loop2:" and your second "IntCmp $2 $3 end loop" to "IntCmp $2 $3 end loop2".
Hope this helps.
Jnuw
Hope this helps.
Jnuw
You'll also need to do the same with the end lables. (You can't have 2 lables named the same within your script.)
Other alternatives:
1) You could make each loop it's own function
2) You can use logiclib's ${do} and ${loop} commands instead of lables (To see how this is done, look at the logiclib.nsi in the ${NSISDIR}\examples folder)
Other alternatives:
1) You could make each loop it's own function
2) You can use logiclib's ${do} and ${loop} commands instead of lables (To see how this is done, look at the logiclib.nsi in the ${NSISDIR}\examples folder)
ok I decided to make them in there own functions... but the installer crashes when it gets to this function. I am trying to get this resolved today so any help would be verry much apreciated. Here is my code...
;show regEdit gui---------------------------
Function regEdit
!insertmacro MUI_HEADER_TEXT "Edit the Registry," "read instruction below for this step."
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "RegEditing.ini"
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "RegEditing.ini"
FunctionEnd
;-----------------------------------------------------
;Edit Generic NBC Reg Key------------------------------
Function leaveRegEdit
Call Regedit1
Call Regedit2
FunctionEnd
Function Regedit1
ReadINIStr $6 "$PLUGINSDIR\Regedit.ini" "Field 1" "State"
StrCpy $0 "$6" # set your custom string
StrCpy $1 "/" # set the character to insert
StrLen $2 $0 # get the length of your string to loop through it
StrCpy $3 "0" # init the loop counter
StrCpy $4 "" # init output var
loop: # begin of the loop
StrCpy $5 $0 1 $3 # copy one character of your string to a temp var (offset $3 counts up)
StrCpy $4 "$4$1$5" # add the character extracted and the one to insert everytime
IntOp $3 $3 + 1 # increase counter/offset
IntCmp $2 $3 end loop #stop the loop if end of string reached, else continue
end:
# at this stage, $4 will be "/C/o/m/p/a/n/y"
Push "/I/I/M/S" #text to be replaced
Push $4 #replace with
Push all #replace all occurrences
Push all #replace all occurrences
Push "$INSTDIR\WARN\Dashboard\NBC\Generic NBC reg keys.reg" #file to replace in
Call AdvReplaceInFile
FunctionEnd
Function Regedit2
ReadINIStr $7 "$PLUGINSDIR\Regedit.ini" "Field 2" "State"
StrCpy $0 "$7" # set your custom string
StrCpy $1 "/" # set the character to insert
StrLen $2 $0 # get the length of your string to loop through it
StrCpy $3 "0" # init the loop counter
StrCpy $4 "" # init output var
loop1: # begin of the loop
StrCpy $5 $0 1 $3 # copy one character of your string to a temp var (offset $3 counts up)
StrCpy $4 "$4$1$5" # add the character extracted and the one to insert everytime
IntOp $3 $3 + 1 # increase counter/offset
IntCmp $2 $3 end loop1 #stop the loop if end of string reached, else continue
end:
# at this stage, $4 will be "/C/o/m/p/a/n/y"
Push "/C/A/S/P/O/D" #text to be replaced
Push $4 #replace with
Push all #replace all occurrences
Push all #replace all occurrences
Push "$INSTDIR\WARN\Dashboard\NBC\Generic NBC reg keys.reg" #file to replace in
Call AdvReplaceInFile
FunctionEnd
;------------------------------------------------------
;show regEdit gui---------------------------
Function regEdit
!insertmacro MUI_HEADER_TEXT "Edit the Registry," "read instruction below for this step."
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "RegEditing.ini"
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "RegEditing.ini"
FunctionEnd
;-----------------------------------------------------
;Edit Generic NBC Reg Key------------------------------
Function leaveRegEdit
Call Regedit1
Call Regedit2
FunctionEnd
Function Regedit1
ReadINIStr $6 "$PLUGINSDIR\Regedit.ini" "Field 1" "State"
StrCpy $0 "$6" # set your custom string
StrCpy $1 "/" # set the character to insert
StrLen $2 $0 # get the length of your string to loop through it
StrCpy $3 "0" # init the loop counter
StrCpy $4 "" # init output var
loop: # begin of the loop
StrCpy $5 $0 1 $3 # copy one character of your string to a temp var (offset $3 counts up)
StrCpy $4 "$4$1$5" # add the character extracted and the one to insert everytime
IntOp $3 $3 + 1 # increase counter/offset
IntCmp $2 $3 end loop #stop the loop if end of string reached, else continue
end:
# at this stage, $4 will be "/C/o/m/p/a/n/y"
Push "/I/I/M/S" #text to be replaced
Push $4 #replace with
Push all #replace all occurrences
Push all #replace all occurrences
Push "$INSTDIR\WARN\Dashboard\NBC\Generic NBC reg keys.reg" #file to replace in
Call AdvReplaceInFile
FunctionEnd
Function Regedit2
ReadINIStr $7 "$PLUGINSDIR\Regedit.ini" "Field 2" "State"
StrCpy $0 "$7" # set your custom string
StrCpy $1 "/" # set the character to insert
StrLen $2 $0 # get the length of your string to loop through it
StrCpy $3 "0" # init the loop counter
StrCpy $4 "" # init output var
loop1: # begin of the loop
StrCpy $5 $0 1 $3 # copy one character of your string to a temp var (offset $3 counts up)
StrCpy $4 "$4$1$5" # add the character extracted and the one to insert everytime
IntOp $3 $3 + 1 # increase counter/offset
IntCmp $2 $3 end loop1 #stop the loop if end of string reached, else continue
end:
# at this stage, $4 will be "/C/o/m/p/a/n/y"
Push "/C/A/S/P/O/D" #text to be replaced
Push $4 #replace with
Push all #replace all occurrences
Push all #replace all occurrences
Push "$INSTDIR\WARN\Dashboard\NBC\Generic NBC reg keys.reg" #file to replace in
Call AdvReplaceInFile
FunctionEnd
;------------------------------------------------------