Features:
- Fast replacement in text file
- Case sensitive/insensitive replacement
- Supports strings and pointers to the buffer
- If no changes possible, output file will be untouched
- Checks before replacement, if input file is a binary file
Rough estimate perfomance info:
50 Mb text file with 4.000.000 strings to replace processed
with option "/S=1" 4 sec, with option "/S=0" 37 sec
"TextReplace" plugin v1.0
Removed attachment 18 July 2006 - Afrow UK. See last post for latest version.
TextReplace plugin
30 posts
Great and useful plugin, thanks a lot Instructor 🙂
You are welcome 🙂
New: "FindInFile" only search in file without replacements
New: "ReplaceInFile" options:
/AI=[1|0] -Copy attributes from the InputFile to OutputFile or not
/AO=[0|1] -Change OutputFile attributes to normal before writting or not
"TextReplace" plugin v1.1
New: "ReplaceInFile" options:
/AI=[1|0] -Copy attributes from the InputFile to OutputFile or not
/AO=[0|1] -Change OutputFile attributes to normal before writting or not
"TextReplace" plugin v1.1
Thanks for the great plugin Instructor!
I'm a bit confused to what the options are.
If AI is true, does that mean read/write/execute/other attributes of the InputFile will be kept the same when written out?
If AO is true, does it mean change attributes to some standard?
I'm a bit confused to what the options are.
If AI is true, does that mean read/write/execute/other attributes of the InputFile will be kept the same when written out?
If AO is true, does it mean change attributes to some standard?
If AI is true, does that mean read/write/execute/other attributes of the InputFile will be kept the same when written out?Yes
If AO is true, does it mean change attributes to some standard?/AO=0 - Don't change OutputFile attributes (error "-9" possible)
-9 can't open output file for writting
For example:
If "/AO=0" and OutputFile has read-only attribute, then error -9 will be returned.
If "/AO=1" and OutputFile has read-only attribute, then no error will be returned.
Thanks for the quick reply.
That clears things up!
That clears things up!
Hi Instructor can i get the source code please
I'm taking C++ now. Actually this is first course, so i need something to practice, you know.
I'm taking C++ now. Actually this is first course, so i need something to practice, you know.
Hi Instructor can i get the source code pleaseArchive contains binary and source code.
I didn't see it before....
Fixed: Now plugin doesn't read all file if it is binary.
Updated: "StrFunc.h" to v1.7
Updated: "ConvFunc.h" to v1.7
Update from previous versions:
- Insert line in script:
!include "TextReplace.nsh"
- Replace:
textreplace::FindInFile -> ${textreplace::FindInFile} ...
- Replace:
.r0 -> $0, .r1 -> $1 ... .R0 -> $R0, .R1 -> $R1 ...
"TextReplace" plugin v1.2
Updated: "StrFunc.h" to v1.7
Updated: "ConvFunc.h" to v1.7
Update from previous versions:
- Insert line in script:
!include "TextReplace.nsh"
- Replace:
textreplace::FindInFile -> ${textreplace::FindInFile} ...
- Replace:
.r0 -> $0, .r1 -> $1 ... .R0 -> $R0, .R1 -> $R1 ...
"TextReplace" plugin v1.2
Instructor, there is a bug in the plugin that makes files bigger than 128 bytes readonly|hidden|system|archive|temporary|offline|not_content_indexed.
Don't understand. If file size equal to 128 then after processing it attributes changed to readonly|hidden|system|archive|temporary|offline|not_content_indexed? And what plugin parameters you use?
Yes, I am just using TextReplaceTest.nsi that comes with the plugin. Attached are the input.txt and output.txt files and the exe.
Fixed: Buffer overflow (thanks zeeh3)
"TextReplace" plugin v1.3
"TextReplace" plugin v1.3
Fixed: crash when using long string (> 1024) with 8192 special build (thanks zeeh3)
"TextReplace" plugin v1.4
"TextReplace" plugin v1.4
Forgot to remove debug MessageBox in release.
"TextReplace" plugin v1.4
"TextReplace" plugin v1.4
Thank you very much. You plugin just saved me much valuable time.
Changed: algorithm optimized - replacement speed increased.
"TextReplace" plugin v1.5
"TextReplace" plugin v1.5
Replace one line with two lines
I am trying to replace one line of a text file with two lines, using TextReplace. The arrangement of info in the file looks something like this -
Line 1
Line 2
Line 3
Line 4
I am searching for "Line 3" and want to replace it with
Line 3a
Line 3b
for a final file arrangement that looks like -
Line 1
Line 2
Line 3a
Line 3b
Line 4
Here is the actual TextReplace line
${textreplace::ReplaceInFile} "$PROGRAMFILES\OpenOffice.org 2.4\share\dict\ooo\dictionary.lst" "$PROGRAMFILES\OpenOffice.org 2.4\share\dict\ooo\dictionary.lst" "THES en US th_en_US_v2" "THES en US th_en_US_v2 \r DICT en US en_US_OpenMedSpel \r" "/S=1" $0
This of course, does not produce the desired output. It looks like this
Line 1
Line 2
Line 3a \r Line 3b \r
Line 4
Any help with this problem would be appreciated. Thanks.
I am trying to replace one line of a text file with two lines, using TextReplace. The arrangement of info in the file looks something like this -
Line 1
Line 2
Line 3
Line 4
I am searching for "Line 3" and want to replace it with
Line 3a
Line 3b
for a final file arrangement that looks like -
Line 1
Line 2
Line 3a
Line 3b
Line 4
Here is the actual TextReplace line
${textreplace::ReplaceInFile} "$PROGRAMFILES\OpenOffice.org 2.4\share\dict\ooo\dictionary.lst" "$PROGRAMFILES\OpenOffice.org 2.4\share\dict\ooo\dictionary.lst" "THES en US th_en_US_v2" "THES en US th_en_US_v2 \r DICT en US en_US_OpenMedSpel \r" "/S=1" $0
This of course, does not produce the desired output. It looks like this
Line 1
Line 2
Line 3a \r Line 3b \r
Line 4
Any help with this problem would be appreciated. Thanks.
\r -> $\r$\n
Hi,
What license the TextReplace v1.5 plugin is distributed under ? I can't find any license notice in the zip file or
the home page (http://nsis.sourceforge.net/TextReplace_plugin).
Thanks.
What license the TextReplace v1.5 plugin is distributed under ? I can't find any license notice in the zip file or
the home page (http://nsis.sourceforge.net/TextReplace_plugin).
Thanks.
nduboc
NSIS license.
NSIS license.
Originally posted by InstructorYou mean the zlib/libpng license as stated on the License
nduboc
NSIS license.
page of the NSIS web site, right ?
saw your update of the locate plugin, so i was wondering if there are plans for a unicode version of textreplace
I get "Invalid command: ${textreplace::ReplaceInFile}" when trying to call TextReplace commands. The only way I could get it to work was to use "TextReplace::_ReplaceInFile", but you're probably not supposed to call the commands like that. What is the proper way to call TextReplace commands?
The problem was I needed to have "!include "TextReplace.nsh".Originally Posted by threexk View PostI get "Invalid command: ${textreplace::ReplaceInFile}" when trying to call TextReplace commands. The only way I could get it to work was to use "TextReplace::_ReplaceInFile", but you're probably not supposed to call the commands like that. What is the proper way to call TextReplace commands?
${textreplace::ReplaceInFile} has the disadvantage of requiring all six parameters, whereas TextReplace::_ReplaceInFile lets you provide less than six with the unspecified parameters taking default values, so I am sticking with the latter.
Hi there
When I use the plug-in, the message "Invalid command: ${textreplace::ReplaceInFile}" appears after the command "!Include" TextReplace.nsh "wrote!
When I use the plug-in, the message "Invalid command: ${textreplace::ReplaceInFile}" appears after the command "!Include" TextReplace.nsh "wrote!
Hi,
I installed NSIS 3.01 and then ran install.exe after extracting textreplace.zip v1.5. When I go to compile a script, I get:
!insertmacro: textreplace::ReplaceInFile
Plugin not found, cannot call textreplace::_ReplaceInFile
Error in macro textreplace::ReplaceInFile on macroline 1
The plugin appears to have installed correctly into Plugins and Include:
C:\Program Files (x86)\NSIS>dir plugins\Text*
Directory of C:\Program Files (x86)\NSIS\plugins
07/09/2017 07:42 PM 5,120 TextReplace.dll
1 File(s) 5,120 bytes
C:\Program Files (x86)\NSIS>dir include\Text*
Directory of C:\Program Files (x86)\NSIS\include
09/06/2013 04:48 PM 24,348 TextFunc.nsh
07/09/2017 07:42 PM 1,125 TextReplace.nsh
2 File(s) 25,473 bytes
When I start compiling a script and NSIS is listing the plugins, textreplace isn't one of them.
I also tried manually copying TextReplace.dll and TextReplace.nsh from the extracted zip file to the Plugins and Include directories respectively. Same result.
How do I get NSIS to recognize the plugin?
I installed NSIS 3.01 and then ran install.exe after extracting textreplace.zip v1.5. When I go to compile a script, I get:
!insertmacro: textreplace::ReplaceInFile
Plugin not found, cannot call textreplace::_ReplaceInFile
Error in macro textreplace::ReplaceInFile on macroline 1
The plugin appears to have installed correctly into Plugins and Include:
C:\Program Files (x86)\NSIS>dir plugins\Text*
Directory of C:\Program Files (x86)\NSIS\plugins
07/09/2017 07:42 PM 5,120 TextReplace.dll
1 File(s) 5,120 bytes
C:\Program Files (x86)\NSIS>dir include\Text*
Directory of C:\Program Files (x86)\NSIS\include
09/06/2013 04:48 PM 24,348 TextFunc.nsh
07/09/2017 07:42 PM 1,125 TextReplace.nsh
2 File(s) 25,473 bytes
When I start compiling a script and NSIS is listing the plugins, textreplace isn't one of them.
I also tried manually copying TextReplace.dll and TextReplace.nsh from the extracted zip file to the Plugins and Include directories respectively. Same result.
How do I get NSIS to recognize the plugin?
It tells you what the problem is "Plugin not found". Just take a look in your C:\Program Files (x86)\NSIS\plugins directory and you should be able to figure out why it is not working...