TextFunc.nsi 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834
  1. ;_____________________________________________________________________________
  2. ;
  3. ; Text Functions
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7. Name "Text Functions"
  8. OutFile "TextFunc.exe"
  9. Caption "$(^Name)"
  10. XPStyle on
  11. RequestExecutionLevel user
  12. !include "WinMessages.nsh"
  13. !include "TextFunc.nsh"
  14. Var HWND
  15. Var INI
  16. Var LOG
  17. Var PROJECT
  18. Var CALLBACK
  19. Var VIEW
  20. Var FUNCTION
  21. Var LINEFIND1
  22. Var LINEFIND2
  23. Var LINEFIND3
  24. Var LINEREAD1
  25. Var LINEREAD2
  26. Var FILEREADFROMEND1
  27. Var LINESUM1
  28. Var FILEJOIN1
  29. Var FILEJOIN2
  30. Var FILEJOIN3
  31. Var TEXTCOMPARE1
  32. Var TEXTCOMPARE2
  33. Var TEXTCOMPARE3
  34. Var CONFIGREAD1
  35. Var CONFIGREAD2
  36. Var CONFIGWRITE1
  37. Var CONFIGWRITE2
  38. Var CONFIGWRITE3
  39. Var FILERECODE1
  40. Var FILERECODE2
  41. Page Custom ShowCustom LeaveCustom
  42. Function ShowCustom
  43. InstallOptions::initDialog "$INI"
  44. Pop $hwnd
  45. GetDlgItem $0 $HWND 1206
  46. ShowWindow $0 0
  47. GetDlgItem $0 $HWND 1208
  48. ShowWindow $0 0
  49. GetDlgItem $0 $HWND 1209
  50. ShowWindow $0 0
  51. StrCpy $FUNCTION LineFind
  52. StrCpy $LINEREAD2 10
  53. StrCpy $TEXTCOMPARE3 FastDiff
  54. StrCpy $CONFIGREAD1 "$WINDIR\system.ini"
  55. StrCpy $CONFIGREAD2 "shell="
  56. StrCpy $FILERECODE2 CharToOem
  57. InstallOptions::show
  58. Pop $0
  59. FunctionEnd
  60. Function LeaveCustom
  61. ReadINIStr $0 $INI "Settings" "State"
  62. ReadINIStr $R0 $INI "Field 1" "State"
  63. ReadINIStr $R1 $INI "Field 2" "State"
  64. ReadINIStr $R2 $INI "Field 3" "State"
  65. ReadINIStr $R3 $INI "Field 4" "State"
  66. ReadINIStr $R4 $INI "Field 5" "State"
  67. ReadINIStr $R5 $INI "Field 6" "State"
  68. StrCpy $R4 $R4 8
  69. StrCpy $R5 $R5 8
  70. StrCpy $6 0
  71. StrCpy $7 '$${'
  72. StrCpy $8 'r'
  73. StrCpy $9 'n'
  74. StrCmp $0 10 Log
  75. StrCmp $0 9 ViewOrEdit
  76. StrCmp $0 0 Enter
  77. goto MainSend
  78. Log:
  79. Exec 'notepad.exe $LOG'
  80. Abort
  81. ViewOrEdit:
  82. StrCmp $FUNCTION FileReadFromEnd 0 Edit
  83. StrCmp $VIEW '' 0 ViewFileReadFromEndCallback
  84. GetTempFileName $VIEW $PLUGINSDIR
  85. StrCpy $7 '$$'
  86. FileOpen $0 $VIEW w
  87. FileWrite $0 `Function FileReadFromEndCallback$\r$\n`
  88. FileWrite $0 ` MessageBox MB_OKCANCEL '$7$$9 "Line"=[$$9]$7\$9$7$$8 "#"=[$$8]$7\$9$7$$7 "-#"=[$$7]' IDOK +2$\r$\n`
  89. FileWrite $0 ` StrCpy $$R0 StopFileReadFromEnd$\r$\n$\r$\n`
  90. FileWrite $0 ` Push $$R0$\r$\n`
  91. FileWrite $0 `FunctionEnd$\r$\n`
  92. FileClose $0
  93. StrCpy $7 '$${'
  94. SetFileAttributes $VIEW READONLY
  95. ViewFileReadFromEndCallback:
  96. Exec 'notepad.exe $VIEW'
  97. Abort
  98. Edit:
  99. StrCmp $CALLBACK '' +5
  100. StrCmp $6$R6 '0$R0$R4$R5' showproject
  101. StrCmp $R6 '$R0$R4$R5' +3
  102. Delete $CALLBACK
  103. StrCpy $CALLBACK ''
  104. StrCpy $R6 '$R0$R4$R5'
  105. #Project#
  106. StrCmp $6$R0 "01. LineFind" 0 +5
  107. IfFileExists $CALLBACK +2
  108. GetTempFileName $CALLBACK $PLUGINSDIR
  109. FileOpen $0 $CALLBACK w
  110. goto function
  111. IfFileExists $PROJECT +2
  112. GetTempFileName $PROJECT $PLUGINSDIR
  113. FileOpen $0 $PROJECT w
  114. #Name#
  115. FileWrite $0 'Name "$FUNCTION"$\r$\n'
  116. FileWrite $0 'OutFile "$PROJECT.exe"$\r$\n$\r$\n'
  117. #!include#
  118. StrCmp $R0$R4 '1. LineFindExample5' 0 TextFuncInclude
  119. IfFileExists '$EXEDIR\WordFunc.nsh' 0 +3
  120. FileWrite $0 '!include "$EXEDIR\WordFunc.nsh"$\r$\n'
  121. goto +2
  122. FileWrite $0 '!include "WordFunc.nsh"$\r$\n'
  123. FileWrite $0 '!insertmacro WordFind$\r$\n'
  124. FileWrite $0 '!insertmacro WordFindS$\r$\n'
  125. FileWrite $0 '!insertmacro WordFind2X$\r$\n'
  126. FileWrite $0 '!insertmacro WordFind2XS$\r$\n'
  127. FileWrite $0 '!insertmacro WordFind3X$\r$\n'
  128. FileWrite $0 '!insertmacro WordFind3XS$\r$\n'
  129. FileWrite $0 '!insertmacro WordReplace$\r$\n'
  130. FileWrite $0 '!insertmacro WordReplaceS$\r$\n'
  131. FileWrite $0 '!insertmacro WordAdd$\r$\n'
  132. FileWrite $0 '!insertmacro WordAddS$\r$\n'
  133. FileWrite $0 '!insertmacro WordInsert$\r$\n'
  134. FileWrite $0 '!insertmacro WordInsertS$\r$\n'
  135. FileWrite $0 '!insertmacro StrFilter$\r$\n'
  136. FileWrite $0 '!insertmacro StrFilterS$\r$\n'
  137. TextFuncInclude:
  138. IfFileExists '$EXEDIR\TextFunc.nsh' 0 +3
  139. FileWrite $0 '!include "$EXEDIR\TextFunc.nsh"$\r$\n'
  140. goto +2
  141. FileWrite $0 '!include "TextFunc.nsh"$\r$\n'
  142. FileWrite $0 '!insertmacro $FUNCTION$\r$\n'
  143. StrCmp $FUNCTION TextCompare +2
  144. FileWrite $0 '!insertmacro TrimNewLines$\r$\n'
  145. #Section#
  146. FileWrite $0 '$\r$\nSection -empty$\r$\n'
  147. FileWrite $0 'SectionEnd$\r$\n$\r$\n'
  148. #Function .onInit#
  149. FileWrite $0 'Function .onInit$\r$\n'
  150. StrCmp $R0$R5 "6. TextCompareExample1" 0 TextCompareExample235
  151. FileWrite $0 ' StrCpy $$R0 ""$\r$\n'
  152. FileWrite $0 ' $7TextCompare} "$R1" "$R2" "$R3" "$R5"$\r$\n'
  153. FileWrite $0 ' IfErrors error$\r$\n'
  154. FileWrite $0 ' StrCmp $$R0 NotEqual 0 +2$\r$\n'
  155. FileWrite $0 ' MessageBox MB_OK " Files differ" IDOK +2$\r$\n'
  156. FileWrite $0 ' MessageBox MB_OK " Files identical"$\r$\n'
  157. FileWrite $0 ' goto end$\r$\n$\r$\n'
  158. goto endoninit
  159. TextCompareExample235:
  160. StrCmp $R0$R5 "6. TextCompareExample2" +3
  161. StrCmp $R0$R5 "6. TextCompareExample3" +2
  162. StrCmp $R0$R5 "6. TextCompareExample5" 0 TextCompareExample4
  163. FileWrite $0 ' StrCpy $$R0 "$R1"$\r$\n'
  164. FileWrite $0 ' StrCpy $$R1 "$R2"$\r$\n$\r$\n'
  165. FileWrite $0 ' GetTempFileName $$R2$\r$\n'
  166. FileWrite $0 ' FileOpen $$R3 $$R2 w$\r$\n'
  167. FileWrite $0 ' FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n'
  168. FileWrite $0 ' $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n'
  169. FileWrite $0 ' IfErrors error$\r$\n'
  170. FileWrite $0 ' Exec "notepad.exe $$R2"$\r$\n'
  171. FileWrite $0 ' goto end$\r$\n$\r$\n'
  172. goto endoninit
  173. TextCompareExample4:
  174. StrCmp $R0$R5 "6. TextCompareExample4" 0 LineFindExample123456
  175. FileWrite $0 ' StrCpy $$R0 "$R1"$\r$\n'
  176. FileWrite $0 ' StrCpy $$R1 "$R2"$\r$\n$\r$\n'
  177. FileWrite $0 ' GetTempFileName $$R2$\r$\n'
  178. FileWrite $0 ' FileOpen $$R3 $$R2 w$\r$\n'
  179. FileWrite $0 ' FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n'
  180. FileWrite $0 ' $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n'
  181. FileWrite $0 ' IfErrors error$\r$\n'
  182. FileWrite $0 ' FileWrite $$R3 "$$\$8$$\$9$$R1 | $$R0$$\$8$$\$9"$\r$\n'
  183. FileWrite $0 ' $7TextCompare} "$$R1" "$$R0" "$R3" "$R5"$\r$\n'
  184. FileWrite $0 ' FileClose $$R3$\r$\n'
  185. FileWrite $0 ' IfErrors error$\r$\n'
  186. FileWrite $0 ' Exec "notepad.exe $$R2"$\r$\n$\r$\n'
  187. FileWrite $0 ' goto end$\r$\n$\r$\n'
  188. goto endoninit
  189. LineFindExample123456:
  190. FileWrite $0 ' $7$FUNCTION} "$R1" "$R2" "$R3" "$R4"$\r$\n'
  191. FileWrite $0 ' IfErrors error$\r$\n'
  192. FileWrite $0 ' MessageBox MB_YESNO " Open output file?" IDNO end$\r$\n'
  193. FileWrite $0 ' StrCmp "$R2" "" 0 +3$\r$\n'
  194. FileWrite $0 ` Exec 'notepad.exe "$R1"'$\r$\n`
  195. FileWrite $0 ' goto end$\r$\n'
  196. FileWrite $0 ' SearchPath $$R2 "$R2"$\r$\n'
  197. FileWrite $0 ` Exec 'notepad.exe "$$R2"'$\r$\n`
  198. FileWrite $0 ' goto end$\r$\n$\r$\n'
  199. endoninit:
  200. FileWrite $0 ' error:$\r$\n'
  201. FileWrite $0 ' MessageBox MB_OK "Error"$\r$\n$\r$\n'
  202. FileWrite $0 ' end:$\r$\n'
  203. FileWrite $0 ' Quit$\r$\n'
  204. FileWrite $0 'FunctionEnd$\r$\n$\r$\n'
  205. #FunctionEnd#
  206. #Function CallBack#
  207. StrCmp $CALLBACK '' 0 close
  208. function:
  209. StrCmp $R0 '1. LineFind' 0 +8
  210. FileWrite $0 'Function $R4$\r$\n'
  211. StrCmp $R4 "Example1" Example1LF
  212. StrCmp $R4 "Example2" Example2LF
  213. StrCmp $R4 "Example3" Example3LF
  214. StrCmp $R4 "Example4" Example4LF
  215. StrCmp $R4 "Example5" Example5LF
  216. StrCmp $R4 "Example6" Example6LF
  217. FileWrite $0 'Function $R5$\r$\n'
  218. StrCmp $R5 "Example1" Example1TC
  219. StrCmp $R5 "Example2" Example2TC
  220. StrCmp $R5 "Example3" Example3TC
  221. StrCmp $R5 "Example4" Example4TC
  222. StrCmp $R5 "Example5" Example3TC
  223. Example1LF:
  224. FileWrite $0 " $7TrimNewLines} '$$R9' $$R9$\r$\n"
  225. FileWrite $0 " StrCpy $$R9 $$R9 '' 2 ;delete first two symbols$\r$\n"
  226. FileWrite $0 " StrCpy $$R9 '$$R9$$\$8$$\$9'$\r$\n$\r$\n"
  227. goto endwrite
  228. Example2LF:
  229. FileWrite $0 " $7TrimNewLines} '$$R9' $$R9$\r$\n"
  230. FileWrite $0 " StrCpy $$R9 '$$R9 ~Changed line ($$R8)~$$\$8$$\$9'$\r$\n$\r$\n"
  231. goto endwrite
  232. Example3LF:
  233. FileWrite $0 " StrCpy $$0 SkipWrite$\r$\n$\r$\n"
  234. goto endwrite
  235. Example4LF:
  236. FileWrite $0 " FileWrite $$R4 '---First Line---$$\$8$$\$9'$\r$\n"
  237. FileWrite $0 " FileWrite $$R4 '---Second Line ...---$$\$8$$\$9'$\r$\n$\r$\n"
  238. goto endwrite
  239. Example5LF:
  240. FileWrite $0 " ; You can use:$\r$\n"
  241. FileWrite $0 " ; $7WordFind}|$7WordFindS}|$7WordFind2X}|$7WordFind2XS}|$\r$\n"
  242. FileWrite $0 " ; $7WordFind3X}|$7WordFind3XS}|$7WordReplace}|$7WordReplaceS}|$\r$\n"
  243. FileWrite $0 " ; $7WordAdd}|$7WordAddS}|$7WordInsert}|$7WordInsertS}|$\r$\n"
  244. FileWrite $0 " ; $7StrFilter}|$7StrFilterS}$\r$\n$\r$\n"
  245. FileWrite $0 " $7WordReplace} '$$R9' ' ' '_' '+*' $$R9$\r$\n$\r$\n"
  246. goto endwrite
  247. Example6LF:
  248. FileWrite $0 ' ;(Cut lines from a line to another line (also including that line))$\r$\n'
  249. FileWrite $0 ' StrCmp $$R0 finish stop$\r$\n'
  250. FileWrite $0 ' StrCmp $$R0 start finish$\r$\n'
  251. FileWrite $0 ' StrCmp $$R9 "Start Line$$\$8$$\$9" 0 skip$\r$\n'
  252. FileWrite $0 ' StrCpy $$R0 start$\r$\n'
  253. FileWrite $0 ' StrCpy $$R1 $$R9$\r$\n'
  254. FileWrite $0 ' goto code$\r$\n'
  255. FileWrite $0 ' finish:$\r$\n'
  256. FileWrite $0 ' StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 code$\r$\n'
  257. FileWrite $0 ' StrCpy $$R0 finish$\r$\n'
  258. FileWrite $0 ' StrCpy $$R2 $$R8$\r$\n'
  259. FileWrite $0 ' goto code$\r$\n'
  260. FileWrite $0 ' skip:$\r$\n'
  261. FileWrite $0 ' StrCpy $$0 SkipWrite$\r$\n'
  262. FileWrite $0 ' goto output$\r$\n'
  263. FileWrite $0 ' stop:$\r$\n'
  264. FileWrite $0 ' StrCpy $$0 StopLineFind$\r$\n'
  265. FileWrite $0 ' goto output$\r$\n$\r$\n'
  266. FileWrite $0 ' ;;(Delete lines from a line to another line (also including that line))$\r$\n'
  267. FileWrite $0 ' ; StrCmp $$R0 finish code$\r$\n'
  268. FileWrite $0 ' ; StrCmp $$R0 start finish$\r$\n'
  269. FileWrite $0 ' ; StrCmp $$R9 "Start Line$$\$8$$\$9" 0 code$\r$\n'
  270. FileWrite $0 ' ; StrCpy $$R0 start$\r$\n'
  271. FileWrite $0 ' ; StrCpy $$R1 $$R8$\r$\n'
  272. FileWrite $0 ' ; goto skip$\r$\n'
  273. FileWrite $0 ' ; finish:$\r$\n'
  274. FileWrite $0 ' ; StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 skip$\r$\n'
  275. FileWrite $0 ' ; StrCpy $$R0 finish$\r$\n'
  276. FileWrite $0 ' ; StrCpy $$R2 $$R8$\r$\n'
  277. FileWrite $0 ' ; skip:$\r$\n'
  278. FileWrite $0 ' ; StrCpy $$0 SkipWrite$\r$\n'
  279. FileWrite $0 ' ; goto output$\r$\n$\r$\n'
  280. FileWrite $0 ' code:$\r$\n'
  281. FileWrite $0 ' ;...$\r$\n$\r$\n'
  282. FileWrite $0 ' output:$\r$\n'
  283. goto endwrite
  284. Example1TC:
  285. FileWrite $0 " StrCpy $$R0 NotEqual$\r$\n"
  286. FileWrite $0 " StrCpy $$0 StopTextCompare$\r$\n$\r$\n"
  287. goto endwrite
  288. Example2TC:
  289. FileWrite $0 " FileWrite $$R3 '$$8=$$9'$\r$\n"
  290. FileWrite $0 " FileWrite $$R3 '$$6=$$7$$\$8$$\$9'$\r$\n$\r$\n"
  291. goto endwrite
  292. Example3TC:
  293. FileWrite $0 " FileWrite $$R3 '$$8|$$6=$$9'$\r$\n$\r$\n"
  294. goto endwrite
  295. Example4TC:
  296. FileWrite $0 " FileWrite $$R3 '$$8=$$9'$\r$\n$\r$\n"
  297. goto endwrite
  298. endwrite:
  299. FileWrite $0 ' Push $$0$\r$\n'
  300. FileWrite $0 'FunctionEnd$\r$\n'
  301. close:
  302. FileClose $0
  303. goto $6
  304. #FunctionEnd#
  305. showproject:
  306. StrCmp $R0 '1. LineFind' 0 +3
  307. ExecWait 'notepad.exe $CALLBACK'
  308. goto +4
  309. SetFileAttributes $PROJECT READONLY
  310. ExecWait 'notepad.exe $PROJECT'
  311. SetFileAttributes $PROJECT NORMAL
  312. Abort
  313. MainSend:
  314. GetDlgItem $0 $HWND 1210
  315. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  316. GetDlgItem $0 $HWND 1203
  317. ShowWindow $0 1
  318. EnableWindow $0 1
  319. GetDlgItem $0 $HWND 1204
  320. ShowWindow $0 1
  321. EnableWindow $0 1
  322. GetDlgItem $0 $HWND 1205
  323. EnableWindow $0 1
  324. GetDlgItem $0 $HWND 1206
  325. ShowWindow $0 0
  326. GetDlgItem $0 $HWND 1207
  327. ShowWindow $0 0
  328. GetDlgItem $0 $HWND 1208
  329. ShowWindow $0 0
  330. GetDlgItem $0 $HWND 1209
  331. ShowWindow $0 0
  332. GetDlgItem $0 $HWND 1211
  333. EnableWindow $0 1
  334. StrCmp $FUNCTION LineFind 0 +5
  335. StrCpy $LINEFIND1 $R1
  336. StrCpy $LINEFIND2 $R2
  337. StrCpy $LINEFIND3 $R3
  338. goto LineFindSend
  339. StrCmp $FUNCTION LineRead 0 +4
  340. StrCpy $LINEREAD1 $R1
  341. StrCpy $LINEREAD2 $R2
  342. goto LineFindSend
  343. StrCmp $FUNCTION FileReadFromEnd 0 +3
  344. StrCpy $FILEREADFROMEND1 $R1
  345. goto LineFindSend
  346. StrCmp $FUNCTION LineSum 0 +3
  347. StrCpy $LINESUM1 $R1
  348. goto LineFindSend
  349. StrCmp $FUNCTION FileJoin 0 +5
  350. StrCpy $FILEJOIN1 $R1
  351. StrCpy $FILEJOIN2 $R2
  352. StrCpy $FILEJOIN3 $R3
  353. goto LineFindSend
  354. StrCmp $FUNCTION TextCompare 0 +5
  355. StrCpy $TEXTCOMPARE1 $R1
  356. StrCpy $TEXTCOMPARE2 $R2
  357. StrCpy $TEXTCOMPARE3 $R3
  358. goto LineFindSend
  359. StrCmp $FUNCTION ConfigRead 0 +4
  360. StrCpy $CONFIGREAD1 $R1
  361. StrCpy $CONFIGREAD2 $R2
  362. goto LineFindSend
  363. StrCmp $FUNCTION ConfigWrite 0 +5
  364. StrCpy $CONFIGWRITE1 $R1
  365. StrCpy $CONFIGWRITE2 $R2
  366. StrCpy $CONFIGWRITE3 $R3
  367. goto LineFindSend
  368. StrCmp $FUNCTION FileRecode 0 +3
  369. StrCpy $FILERECODE1 $R1
  370. StrCpy $FILERECODE2 $R2
  371. LineFindSend:
  372. StrCmp $R0 "1. LineFind" 0 LineReadSend
  373. StrCmp $FUNCTION LineFind 0 LineFindSend2
  374. StrCmp $R4 "Example1" 0 +3
  375. StrCpy $LINEFIND3 "3:-1"
  376. goto LineFindSend2
  377. StrCmp $R4 "Example2" 0 +3
  378. StrCpy $LINEFIND3 "{5:12 15 -6:-5 -1}"
  379. goto LineFindSend2
  380. StrCmp $R4 "Example3" 0 +3
  381. StrCpy $LINEFIND3 "2:3 10:-5 -3:-2"
  382. goto LineFindSend2
  383. StrCmp $R4 "Example4" 0 +3
  384. StrCpy $LINEFIND3 "10"
  385. goto LineFindSend2
  386. StrCmp $R4 "Example5" 0 +3
  387. StrCpy $LINEFIND3 "1:-1"
  388. goto LineFindSend2
  389. StrCmp $R4 "Example6" 0 +3
  390. StrCpy $LINEFIND3 ""
  391. goto LineFindSend2
  392. StrCmp $R4 "Example7" 0 +2
  393. StrCpy $LINEFIND3 "1:-1"
  394. LineFindSend2:
  395. StrCpy $FUNCTION LineFind
  396. StrCmp $LINEFIND2 '/NUL' 0 +2
  397. StrCpy $LINEFIND2 ''
  398. GetDlgItem $0 $HWND 1201
  399. SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND1"
  400. GetDlgItem $0 $HWND 1203
  401. SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND2"
  402. GetDlgItem $0 $HWND 1205
  403. ShowWindow $0 1
  404. SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND3"
  405. GetDlgItem $0 $HWND 1207
  406. ShowWindow $0 1
  407. GetDlgItem $0 $HWND 1211
  408. ShowWindow $0 1
  409. SendMessage $0 ${WM_SETTEXT} 1 "STR:Edit"
  410. GetDlgItem $0 $HWND 1212
  411. ShowWindow $0 1
  412. StrCmp $LOG '' +2
  413. EnableWindow $0 1
  414. GetDlgItem $0 $HWND 1213
  415. SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  416. GetDlgItem $0 $HWND 1214
  417. SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile"
  418. GetDlgItem $0 $HWND 1215
  419. SendMessage $0 ${WM_SETTEXT} 1 "STR:Range"
  420. GetDlgItem $0 $HWND 1216
  421. SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
  422. StrCmp $R4 "Example7" 0 +9
  423. GetDlgItem $0 $HWND 1203
  424. EnableWindow $0 0
  425. SendMessage $0 ${WM_ENABLE} 1 0
  426. SendMessage $0 ${WM_SETTEXT} 1 "STR:/NUL"
  427. GetDlgItem $0 $HWND 1204
  428. EnableWindow $0 0
  429. GetDlgItem $0 $HWND 1211
  430. EnableWindow $0 0
  431. abort
  432. LineReadSend:
  433. StrCmp $R0 "2. LineRead" 0 FileReadFromEndSend
  434. StrCpy $FUNCTION LineRead
  435. GetDlgItem $0 $HWND 1201
  436. SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD1"
  437. GetDlgItem $0 $HWND 1203
  438. ShowWindow $0 1
  439. SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD2"
  440. GetDlgItem $0 $HWND 1204
  441. ShowWindow $0 0
  442. GetDlgItem $0 $HWND 1205
  443. ShowWindow $0 0
  444. GetDlgItem $0 $HWND 1211
  445. ShowWindow $0 0
  446. GetDlgItem $0 $HWND 1212
  447. ShowWindow $0 0
  448. GetDlgItem $0 $HWND 1213
  449. SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  450. GetDlgItem $0 $HWND 1214
  451. SendMessage $0 ${WM_SETTEXT} 1 "STR:Line #"
  452. GetDlgItem $0 $HWND 1215
  453. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  454. GetDlgItem $0 $HWND 1216
  455. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  456. Abort
  457. FileReadFromEndSend:
  458. StrCmp $R0 "3. FileReadFromEnd" 0 LineSumSend
  459. StrCpy $FUNCTION FileReadFromEnd
  460. GetDlgItem $0 $HWND 1201
  461. SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEREADFROMEND1"
  462. GetDlgItem $0 $HWND 1203
  463. ShowWindow $0 0
  464. GetDlgItem $0 $HWND 1204
  465. ShowWindow $0 0
  466. GetDlgItem $0 $HWND 1205
  467. ShowWindow $0 0
  468. GetDlgItem $0 $HWND 1209
  469. ShowWindow $0 1
  470. GetDlgItem $0 $HWND 1211
  471. ShowWindow $0 1
  472. SendMessage $0 ${WM_SETTEXT} 1 "STR:View"
  473. GetDlgItem $0 $HWND 1212
  474. ShowWindow $0 0
  475. GetDlgItem $0 $HWND 1213
  476. SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  477. GetDlgItem $0 $HWND 1214
  478. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  479. GetDlgItem $0 $HWND 1215
  480. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  481. GetDlgItem $0 $HWND 1216
  482. SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
  483. Abort
  484. LineSumSend:
  485. StrCmp $R0 "4. LineSum" 0 FileJoinSend
  486. StrCpy $FUNCTION LineSum
  487. GetDlgItem $0 $HWND 1201
  488. SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINESUM1"
  489. GetDlgItem $0 $HWND 1203
  490. ShowWindow $0 0
  491. GetDlgItem $0 $HWND 1204
  492. ShowWindow $0 0
  493. GetDlgItem $0 $HWND 1205
  494. ShowWindow $0 0
  495. GetDlgItem $0 $HWND 1211
  496. ShowWindow $0 0
  497. GetDlgItem $0 $HWND 1212
  498. ShowWindow $0 0
  499. GetDlgItem $0 $HWND 1213
  500. SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  501. GetDlgItem $0 $HWND 1214
  502. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  503. GetDlgItem $0 $HWND 1215
  504. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  505. GetDlgItem $0 $HWND 1216
  506. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  507. Abort
  508. FileJoinSend:
  509. StrCmp $R0 "5. FileJoin" 0 TextCompareSend
  510. StrCpy $FUNCTION FileJoin
  511. GetDlgItem $0 $HWND 1201
  512. SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN1"
  513. GetDlgItem $0 $HWND 1203
  514. ShowWindow $0 1
  515. SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN2"
  516. GetDlgItem $0 $HWND 1204
  517. ShowWindow $0 1
  518. GetDlgItem $0 $HWND 1205
  519. ShowWindow $0 1
  520. EnableWindow $0 1
  521. SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN3"
  522. GetDlgItem $0 $HWND 1206
  523. ShowWindow $0 1
  524. GetDlgItem $0 $HWND 1211
  525. ShowWindow $0 0
  526. GetDlgItem $0 $HWND 1212
  527. ShowWindow $0 0
  528. GetDlgItem $0 $HWND 1213
  529. SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile1"
  530. GetDlgItem $0 $HWND 1214
  531. SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile2"
  532. GetDlgItem $0 $HWND 1215
  533. SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile"
  534. GetDlgItem $0 $HWND 1216
  535. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  536. Abort
  537. TextCompareSend:
  538. StrCmp $R0 "6. TextCompare" 0 ConfigReadSend
  539. StrCmp $FUNCTION TextCompare 0 TextCompareSend2
  540. StrCmp $R5 "Example1" 0 +3
  541. StrCpy $TEXTCOMPARE3 "FastDiff"
  542. goto TextCompareSend2
  543. StrCmp $R5 "Example2" 0 +3
  544. StrCpy $TEXTCOMPARE3 "FastDiff"
  545. goto TextCompareSend2
  546. StrCmp $R5 "Example3" 0 +3
  547. StrCpy $TEXTCOMPARE3 "FastEqual"
  548. goto TextCompareSend2
  549. StrCmp $R5 "Example4" 0 +3
  550. StrCpy $TEXTCOMPARE3 "SlowDiff"
  551. goto TextCompareSend2
  552. StrCmp $R5 "Example5" 0 +2
  553. StrCpy $TEXTCOMPARE3 "SlowEqual"
  554. TextCompareSend2:
  555. StrCpy $FUNCTION TextCompare
  556. GetDlgItem $0 $HWND 1201
  557. SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE1"
  558. GetDlgItem $0 $HWND 1203
  559. SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE2"
  560. GetDlgItem $0 $HWND 1204
  561. ShowWindow $0 1
  562. GetDlgItem $0 $HWND 1205
  563. ShowWindow $0 1
  564. EnableWindow $0 0
  565. SendMessage $0 ${WM_ENABLE} 1 0
  566. SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE3"
  567. GetDlgItem $0 $HWND 1208
  568. ShowWindow $0 1
  569. GetDlgItem $0 $HWND 1211
  570. ShowWindow $0 1
  571. SendMessage $0 ${WM_SETTEXT} 1 "STR:View"
  572. GetDlgItem $0 $HWND 1212
  573. ShowWindow $0 1
  574. GetDlgItem $0 $HWND 1213
  575. SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile1"
  576. GetDlgItem $0 $HWND 1214
  577. SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile2"
  578. GetDlgItem $0 $HWND 1215
  579. SendMessage $0 ${WM_SETTEXT} 1 "STR:Option"
  580. GetDlgItem $0 $HWND 1216
  581. SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
  582. abort
  583. ConfigReadSend:
  584. StrCmp $R0 "7. ConfigRead" 0 ConfigWriteSend
  585. StrCpy $FUNCTION ConfigRead
  586. GetDlgItem $0 $HWND 1201
  587. SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD1"
  588. GetDlgItem $0 $HWND 1203
  589. ShowWindow $0 1
  590. SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD2"
  591. GetDlgItem $0 $HWND 1204
  592. ShowWindow $0 0
  593. GetDlgItem $0 $HWND 1205
  594. ShowWindow $0 0
  595. GetDlgItem $0 $HWND 1211
  596. ShowWindow $0 0
  597. GetDlgItem $0 $HWND 1212
  598. ShowWindow $0 0
  599. GetDlgItem $0 $HWND 1213
  600. SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  601. GetDlgItem $0 $HWND 1214
  602. SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry"
  603. GetDlgItem $0 $HWND 1215
  604. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  605. GetDlgItem $0 $HWND 1216
  606. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  607. Abort
  608. ConfigWriteSend:
  609. StrCmp $R0 "8. ConfigWrite" 0 FileRecodeSend
  610. StrCpy $FUNCTION ConfigWrite
  611. GetDlgItem $0 $HWND 1201
  612. SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE1"
  613. GetDlgItem $0 $HWND 1203
  614. ShowWindow $0 1
  615. SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE2"
  616. GetDlgItem $0 $HWND 1204
  617. ShowWindow $0 0
  618. GetDlgItem $0 $HWND 1205
  619. ShowWindow $0 1
  620. SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE3"
  621. GetDlgItem $0 $HWND 1211
  622. ShowWindow $0 0
  623. GetDlgItem $0 $HWND 1212
  624. ShowWindow $0 0
  625. GetDlgItem $0 $HWND 1213
  626. SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  627. GetDlgItem $0 $HWND 1214
  628. SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry"
  629. GetDlgItem $0 $HWND 1215
  630. SendMessage $0 ${WM_SETTEXT} 1 "STR:Value"
  631. GetDlgItem $0 $HWND 1216
  632. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  633. Abort
  634. FileRecodeSend:
  635. StrCmp $R0 "9. FileRecode" 0 Abort
  636. StrCpy $FUNCTION FileRecode
  637. GetDlgItem $0 $HWND 1201
  638. SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE1"
  639. GetDlgItem $0 $HWND 1203
  640. ShowWindow $0 1
  641. SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE2"
  642. GetDlgItem $0 $HWND 1204
  643. ShowWindow $0 0
  644. GetDlgItem $0 $HWND 1205
  645. ShowWindow $0 0
  646. GetDlgItem $0 $HWND 1211
  647. ShowWindow $0 0
  648. GetDlgItem $0 $HWND 1212
  649. ShowWindow $0 0
  650. GetDlgItem $0 $HWND 1213
  651. SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  652. GetDlgItem $0 $HWND 1214
  653. SendMessage $0 ${WM_SETTEXT} 1 "STR:Format"
  654. GetDlgItem $0 $HWND 1215
  655. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  656. GetDlgItem $0 $HWND 1216
  657. SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  658. Abort
  659. ;=Enter=
  660. Enter:
  661. StrCmp $R1 '' 0 +3
  662. StrCpy $0 'Choose InputFile'
  663. goto send
  664. IfFileExists $R1 +3
  665. StrCpy $0 'InputFile is not exist'
  666. goto send
  667. StrCmp $R0 "1. LineFind" LineFindRead
  668. StrCmp $R0 "2. LineRead" LineRead
  669. StrCmp $R0 "3. FileReadFromEnd" FileReadFromEnd
  670. StrCmp $R0 "4. LineSum" LineSum
  671. StrCmp $R0 "5. FileJoin" FileJoin
  672. StrCmp $R0 "6. TextCompare" LineFind-TextCompare
  673. StrCmp $R0 "7. ConfigRead" ConfigRead
  674. StrCmp $R0 "8. ConfigWrite" ConfigWrite
  675. StrCmp $R0 "9. FileRecode" FileRecode
  676. Abort
  677. LineFindRead:
  678. StrCmp $R4 "Example7" 0 LineFind-TextCompare
  679. ${LineFind} '$R1' '/NUL' '$R3' LineFindCallback
  680. IfErrors error
  681. StrCmp $R0 StopLineFind 0 done
  682. StrCpy $0 'stopped'
  683. goto send
  684. LineFind-TextCompare:
  685. GetLabelAddress $6 LineFindBack
  686. goto Edit
  687. LineFindBack:
  688. FileClose $0
  689. StrCmp $R0 "6. TextCompare" Compile
  690. StrCmp $CALLBACK '' Compile
  691. ${FileJoin} "$PROJECT" "$CALLBACK" ""
  692. Compile:
  693. StrCmp $LOG '' 0 +4
  694. GetTempFileName $LOG $PLUGINSDIR
  695. GetDlgItem $0 $HWND 1212
  696. EnableWindow $0 1
  697. ReadRegStr $0 HKLM "SOFTWARE\NSIS" ""
  698. IfErrors 0 +2
  699. StrCpy $0 "${NSISDIR}"
  700. nsExec::Exec '"$0\makensis.exe" /O$LOG $PROJECT'
  701. Pop $0
  702. StrCmp $0 0 0 +6
  703. ExecWait '$PROJECT.exe' $0
  704. Delete $PROJECT
  705. Delete $PROJECT.exe
  706. StrCpy $PROJECT ''
  707. goto done
  708. MessageBox MB_YESNO|MB_ICONEXCLAMATION "Compile error. Open log?" IDNO +2
  709. Exec 'notepad.exe $LOG'
  710. StrCpy $0 "Compile Error"
  711. goto send
  712. LineRead:
  713. ${LineRead} "$R1" "$R2" $0
  714. IfErrors error send
  715. FileReadFromEnd:
  716. ${FileReadFromEnd} "$R1" "FileReadFromEndCallback"
  717. IfErrors error
  718. StrCmp $R0 StopFileReadFromEnd 0 done
  719. StrCpy $0 'stopped'
  720. goto send
  721. LineSum:
  722. ${LineSum} "$R1" $0
  723. IfErrors error send
  724. FileJoin:
  725. ${FileJoin} "$R1" "$R2" "$R3"
  726. IfErrors error
  727. MessageBox MB_YESNO " Open output file?" IDNO done
  728. StrCmp $R3 '' 0 +3
  729. Exec '"notepad.exe" "$R1"'
  730. goto done
  731. Exec '"notepad.exe" "$R3"'
  732. goto done
  733. ConfigRead:
  734. ${ConfigRead} "$R1" "$R2" $0
  735. IfErrors error send
  736. ConfigWrite:
  737. ${ConfigWrite} "$R1" "$R2" "$R3" $0
  738. IfErrors error
  739. MessageBox MB_YESNO " Open output file?" IDNO send
  740. Exec '"notepad.exe" "$R1"'
  741. goto send
  742. FileRecode:
  743. ${FileRecode} "$R1" "$R2"
  744. IfErrors error
  745. MessageBox MB_YESNO " Open output file?" IDNO done
  746. Exec '"notepad.exe" "$R1"'
  747. goto done
  748. error:
  749. StrCpy $0 'error'
  750. goto send
  751. done:
  752. StrCpy $0 'Done'
  753. send:
  754. GetDlgItem $1 $HWND 1210
  755. SendMessage $1 ${WM_SETTEXT} 1 "STR:$0"
  756. abort:
  757. Abort
  758. FunctionEnd
  759. Function LineFindCallback
  760. MessageBox MB_OKCANCEL '$$R9 "Line"=[$R9]$\n$$R8 "#"=[$R8]$\n$$R7 "-#"=[$R7]$\n$$R6 "Range"=[$R6]$\n$$R5 "Read"=[$R5]$\n$$R4 "Write"=[$R4]' IDOK +2
  761. StrCpy $R0 StopLineFind
  762. Push $R0
  763. FunctionEnd
  764. Function FileReadFromEndCallback
  765. MessageBox MB_OKCANCEL '$$9 "Line"=[$9]$\n$$8 "#"=[$8]$\n$$7 "-#"=[$7]' IDOK +2
  766. StrCpy $R0 StopFileReadFromEnd
  767. Push $R0
  768. FunctionEnd
  769. Function .onInit
  770. InitPluginsDir
  771. GetTempFileName $INI $PLUGINSDIR
  772. File /oname=$INI "TextFunc.ini"
  773. FunctionEnd
  774. Page instfiles
  775. Section -Empty
  776. SectionEnd