Talk:StrRep: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
 
 
(5 intermediate revisions by 4 users not shown)
Line 5: Line 5:
instead of
instead of
c:\\test\\myfile.exe
c:\\test\\myfile.exe
:You should ask [[User:dandaman32|Dandaman32]] to fix it. In the mean while, you can use the [http://nsis.sourceforge.net/mediawiki/index.php?title=StrRep&oldid=8634 old version] which works perfectly fine. --[[User:Kichik|kichik]] 03:17, 19 May 2006 (PDT)
::This is a known bug, and I'm not totally sure how to fix it. The bug is triggered when your replacement string contains the entire search string, i.e. ${StrReplace} $VAR "\" "\\" $VAR. I'm still trying to fix this, in the meantime, try this:
::  ${StrReplace} $VAR "\" "--{FOO BAR}--" $VAR
::  ${StrReplace} $VAR "--{FOO BAR}--" "\\" $VAR
::--{FOO BAR}-- is just a temporary replacement for "\". It could be any text you like, just make sure it's something that won't already be in the string, like "/" or ":".
::-[[User:Dandaman32|dandaman32]] 10:36, 8 July 2006 (PDT)
== Bug when replacing string at the end of a line ==
When I try to replace a string at the end of the file, it gets stuck in an infinite loop.
To get mine to work, I added the last StrCmp  but i'm not sure if that's the right solution.
<highlight-nsis>
${StrReplace} $1 "example" "" "This is just an example"
    found:
      StrCpy $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_3
      IntOp $STR_REPLACE_VAR_8 $STR_REPLACE_VAR_3 + $STR_REPLACE_VAR_4
      StrCpy $STR_REPLACE_VAR_7 $STR_REPLACE_VAR_0 "" $STR_REPLACE_VAR_8
      StrCpy $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_5$STR_REPLACE_VAR_2$STR_REPLACE_VAR_7
      StrLen $STR_REPLACE_VAR_6 $STR_REPLACE_VAR_0
      ; added to prevent infinite loop 
      StrCmp $STR_REPLACE_VAR_3 $STR_REPLACE_VAR_6 done  
      Goto loop
([[User:kenglish_hi|kenglish_hi]])
</highlight-nsis>

Latest revision as of 02:08, 26 October 2007

Hello, there is a bug when i replace '\' by '\\' like : c:\test\myfile.exe AFTER STRREPLACE c:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.... instead of c:\\test\\myfile.exe

You should ask Dandaman32 to fix it. In the mean while, you can use the old version which works perfectly fine. --kichik 03:17, 19 May 2006 (PDT)
This is a known bug, and I'm not totally sure how to fix it. The bug is triggered when your replacement string contains the entire search string, i.e. ${StrReplace} $VAR "\" "\\" $VAR. I'm still trying to fix this, in the meantime, try this:
${StrReplace} $VAR "\" "--{FOO BAR}--" $VAR
${StrReplace} $VAR "--{FOO BAR}--" "\\" $VAR
--{FOO BAR}-- is just a temporary replacement for "\". It could be any text you like, just make sure it's something that won't already be in the string, like "/" or ":".
-dandaman32 10:36, 8 July 2006 (PDT)

Bug when replacing string at the end of a line

When I try to replace a string at the end of the file, it gets stuck in an infinite loop. To get mine to work, I added the last StrCmp but i'm not sure if that's the right solution.

${StrReplace} $1 "example" "" "This is just an example"
    found:
      StrCpy $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_3
      IntOp $STR_REPLACE_VAR_8 $STR_REPLACE_VAR_3 + $STR_REPLACE_VAR_4
      StrCpy $STR_REPLACE_VAR_7 $STR_REPLACE_VAR_0 "" $STR_REPLACE_VAR_8
      StrCpy $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_5$STR_REPLACE_VAR_2$STR_REPLACE_VAR_7
      StrLen $STR_REPLACE_VAR_6 $STR_REPLACE_VAR_0
      ; added to prevent infinite loop   
      StrCmp $STR_REPLACE_VAR_3 $STR_REPLACE_VAR_6 done	  
      Goto loop
 
([[User:kenglish_hi|kenglish_hi]])