tests/nsis3/share/doc/nsis/Examples/WordFunc.nsi

Summary

Maintainability
Test Coverage
;_____________________________________________________________________________
;
;                          Word Functions
;_____________________________________________________________________________
;
; 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)

Name "Word Functions"
OutFile "WordFunc.exe"
Caption "$(^Name)"
XPStyle on
RequestExecutionLevel user

Var INI
Var HWND
Var STATE

!include "WinMessages.nsh"
!include "WordFunc.nsh"

Page Custom ShowCustom LeaveCustom

Function ShowCustom
    InstallOptions::initDialog "$INI"
    Pop $hwnd
    InstallOptions::show
    Pop $0
FunctionEnd

Function LeaveCustom
    ReadINIStr $0 $INI "Settings" "State"
    StrCmp $0 0 Enter

    GetDlgItem $1 $HWND 1202
    EnableWindow $1 1
    GetDlgItem $1 $HWND 1203
    ShowWindow $1 1
    GetDlgItem $1 $HWND 1204
    ShowWindow $1 1
    GetDlgItem $1 $HWND 1206
    EnableWindow $1 1
    GetDlgItem $1 $HWND 1205
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1206
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"

    ReadINIStr $0 $INI "Field 1" "State"
    StrCmp $0 "1. WordFind        (Find word by number)" 0 WordFind2Send
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:-4"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word):"
    goto WordFindSend

    WordFind2Send:
    StrCmp $0 "                           (Delimiter exclude)" 0 WordFind3Send
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:E-2{"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{ or }after delimiter):"
    goto WordFindSend

    WordFind3Send:
    StrCmp $0 "                           (Sum of words)" 0 WordFind4Send
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:#"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Sum of words):"
    goto WordFindSend

    WordFind4Send:
    StrCmp $0 "                           (Sum of delimiters)" 0 WordFind5Send
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:E*"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Sum of delimiters):"
    goto WordFindSend

    WordFind5Send:
    StrCmp $0 "                           (Find word number)" 0 WordFind6Send
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:/Program Files"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:/Word"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word #):"
    goto WordFindSend

    WordFind6Send:
    StrCmp $0 "                           ( }} )" 0 WordFind7Send
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2}}"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{{ or }}after word):"
    goto WordFindSend

    WordFind7Send:
    StrCmp $0 "                           ( {} )" 0 WordFind8Send
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:+2{}"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Without word):"
    goto WordFindSend

    WordFind8Send:
    StrCmp $0 "                           ( *} )" 0 WordFind2XSend
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2*}"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{* or *}after word with word):"
    goto WordFindSend

    WordFind2XSend:
    StrCmp $0 "2. WordFind2X" 0 WordReplace1Send
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:[C:\"
    GetDlgItem $1 $HWND 1203
    EnableWindow $1 1
    SendMessage $1 ${WM_SETTEXT} 1 "STR:];"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2"
    GetDlgItem $1 $HWND 1207
    SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
    GetDlgItem $1 $HWND 1208
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter1"
    GetDlgItem $1 $HWND 1209
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter2"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word):"
    abort

    WordReplace1Send:
    StrCmp $0 "3. WordReplace (Replace)" 0 WordReplace2Send
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:SYS"
    GetDlgItem $1 $HWND 1203
    SendMessage $1 ${WM_SETTEXT} 1 "STR:bmp"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:+2"
    goto WordReplaceSend

    WordReplace2Send:
    StrCmp $0 "                           (Delete)" 0 WordReplace3Send
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:SYS"
    GetDlgItem $1 $HWND 1203
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:E+"
    goto WordReplaceSend

    WordReplace3Send:
    StrCmp $0 "                           (Multiple-replace)" 0 WordAdd1Send
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys||||||C:\logo.sys|||C:\WINDOWS"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
    GetDlgItem $1 $HWND 1203
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:+1*"
    goto WordReplaceSend

    WordAdd1Send:
    StrCmp $0 "4. WordAdd        (Add)" 0 WordAdd2Send
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:+C:\WINDOWS|C:\config.sys|C:\IO.SYS"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String1 + String2):"
    goto WordAddSend

    WordAdd2Send:
    StrCmp $0 "                           (Delete) " 0 WordInsertSend
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:E-C:\WINDOWS|C:\config.sys|C:\IO.SYS"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String1 - String2):"
    goto WordAddSend

    WordInsertSend:
    StrCmp $0 "5. WordInsert" 0 StrFilter1Send
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\WINDOWS"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
    GetDlgItem $1 $HWND 1203
    EnableWindow $1 1
    SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\logo.sys"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2"
    GetDlgItem $1 $HWND 1207
    SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
    GetDlgItem $1 $HWND 1208
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter"
    GetDlgItem $1 $HWND 1209
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Word"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result:"
    abort

    StrFilter1Send:
    StrCmp $0 "6. StrFilter           (UpperCase)" 0 StrFilter2Send
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:+"
    GetDlgItem $1 $HWND 1203
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String in uppercase):"
    goto StrFilterSend

    StrFilter2Send:
    StrCmp $0 "                           (LowerCase)" 0 StrFilter3Send
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:-"
    GetDlgItem $1 $HWND 1203
    SendMessage $1 ${WM_SETTEXT} 1 "STR:ef"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String in lowercase except EF):"
    goto StrFilterSend

    StrFilter3Send:
    StrCmp $0 "                           (Filter)" 0 VersionCompareSend
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:+12"
    GetDlgItem $1 $HWND 1203
    SendMessage $1 ${WM_SETTEXT} 1 "STR:b"
    GetDlgItem $1 $HWND 1204
    SendMessage $1 ${WM_SETTEXT} 1 "STR:def"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String Digits + Letters + b - def):"
    goto StrFilterSend

    VersionCompareSend:
    StrCmp $0 "7. VersionCompare" 0 VersionConvertSend
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:1.1.1.9"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:1.1.1.01"
    GetDlgItem $1 $HWND 1203
    ShowWindow $1 0
    GetDlgItem $1 $HWND 1204
    ShowWindow $1 0
    GetDlgItem $1 $HWND 1206
    EnableWindow $1 0
    GetDlgItem $1 $HWND 1207
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Version1"
    GetDlgItem $1 $HWND 1208
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Version2"
    GetDlgItem $1 $HWND 1209
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (0-equal 1-newer 2-older):"
    abort

    VersionConvertSend:
    StrCmp $0 "8. VersionConvert" 0 Abort
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:9.0c"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1203
    ShowWindow $1 0
    GetDlgItem $1 $HWND 1204
    ShowWindow $1 0
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1206
    EnableWindow $1 0
    GetDlgItem $1 $HWND 1207
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Version"
    GetDlgItem $1 $HWND 1208
    SendMessage $1 ${WM_SETTEXT} 1 "STR:CharList"
    GetDlgItem $1 $HWND 1209
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (numerical version format):"
    abort

    Abort:
    Abort

    WordFindSend:
    GetDlgItem $1 $HWND 1203
    EnableWindow $1 0
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\Program Files|C:\WINDOWS"
    GetDlgItem $1 $HWND 1207
    SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
    GetDlgItem $1 $HWND 1208
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter"
    GetDlgItem $1 $HWND 1209
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    Abort

    WordReplaceSend:
    GetDlgItem $1 $HWND 1203
    EnableWindow $1 1
    GetDlgItem $1 $HWND 1207
    SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
    GetDlgItem $1 $HWND 1208
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Replace it"
    GetDlgItem $1 $HWND 1209
    SendMessage $1 ${WM_SETTEXT} 1 "STR:         with"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
    GetDlgItem $1 $HWND 1211
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Result:"
    Abort

    WordAddSend:
    GetDlgItem $1 $HWND 1203
    EnableWindow $1 0
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1201
    SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS"
    GetDlgItem $1 $HWND 1202
    SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
    GetDlgItem $1 $HWND 1207
    SendMessage $1 ${WM_SETTEXT} 1 "STR:String1"
    GetDlgItem $1 $HWND 1208
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter"
    GetDlgItem $1 $HWND 1209
    SendMessage $1 ${WM_SETTEXT} 1 "STR:"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:String2"
    Abort

    StrFilterSend:
    GetDlgItem $1 $HWND 1203
    EnableWindow $1 1
    GetDlgItem $1 $HWND 1206
    EnableWindow $1 0
    GetDlgItem $1 $HWND 1207
    SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
    GetDlgItem $1 $HWND 1208
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Filter"
    GetDlgItem $1 $HWND 1209
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Include"
    GetDlgItem $1 $HWND 1210
    SendMessage $1 ${WM_SETTEXT} 1 "STR:Exclude"
    Abort

;=Enter=
    Enter:
    StrCpy $0 ''
    ReadINIStr $STATE $INI "Field 1" "State"
    ReadINIStr $R1 $INI "Field 2" "State"
    ReadINIStr $R2 $INI "Field 3" "State"
    ReadINIStr $R3 $INI "Field 4" "State"
    ReadINIStr $R4 $INI "Field 5" "State"

    StrCmp $STATE "1. WordFind        (Find word by number)" WordFind
    StrCmp $STATE "                           (Delimiter exclude)" WordFind
    StrCmp $STATE "                           (Find in string)" WordFind
    StrCmp $STATE "                           (Sum of words)" WordFind
    StrCmp $STATE "                           (Sum of delimiters)" WordFind
    StrCmp $STATE "                           (Find word number)" WordFind
    StrCmp $STATE "                           ( }} )" WordFind
    StrCmp $STATE "                           ( {} )" WordFind
    StrCmp $STATE "                           ( *} )" WordFind
    StrCmp $STATE "2. WordFind2X" WordFind2X
    StrCmp $STATE "3. WordReplace (Replace)" WordReplace
    StrCmp $STATE "                           (Delete)" WordReplace
    StrCmp $STATE "                           (Multiple-replace)" WordReplace
    StrCmp $STATE "4. WordAdd        (Add)" WordAdd
    StrCmp $STATE "                           (Delete) " WordAdd
    StrCmp $STATE "5. WordInsert" WordInsert
    StrCmp $STATE "6. StrFilter           (UpperCase)" StrFilter
    StrCmp $STATE "                           (LowerCase)" StrFilter
    StrCmp $STATE "                           (Filter)" StrFilter
    StrCmp $STATE "7. VersionCompare" VersionCompare
    StrCmp $STATE "8. VersionConvert" VersionConvert
    Abort

    WordFind:
    ${WordFind} "$R1" "$R2" "$R4" $R0
    IfErrors 0 Send
    StrCpy $0 $R0
    StrCmp $R0 3 0 +3
    StrCpy $3 '"+1" "-1" "+1}" "+1{" "#" "/word"'
    goto error3
    StrCmp $R0 2 0 error1
    StrCpy $R4 $R4 '' 1
    StrCpy $1 $R4 1
    StrCmp $1 / 0 error2
    StrCpy $R4 $R4 '' 1
    StrCpy $R0 '"$R4" no such word.'
    goto Send

    WordFind2X:
    ${WordFind2X} "$R1" "$R2" "$R3" "$R4" $R0
    IfErrors 0 Send
    StrCpy $0 $R0
    StrCmp $R0 3 0 +3
    StrCpy $3 '"+1" "-1"'
    goto error3
    StrCmp $R0 2 +3
    StrCpy $R0 '"$R2...$R3" no words found.'
    goto Send
    StrCpy $R4 $R4 '' 1
    StrCpy $1 $R4 1
    StrCmp $1 / 0 +2
    StrCpy $R4 $R4 '' 1
    StrCpy $R0 '"$R4" no such word.'
    goto Send

    WordReplace:
    ${WordReplace} "$R1" "$R2" "$R3" "$R4" $R0
    IfErrors 0 Send
    StrCpy $0 $R0
    StrCmp $R0 3 0 +3
    StrCpy $3 '"+1" "+1*" "+" "+*" "{}"'
    goto error3
    StrCmp $R0 2 0 error1
    StrCpy $R4 $R4 '' 1
    goto error2

    WordAdd:
    ${WordAdd} "$R1" "$R2" "$R4" $R0
    IfErrors 0 Send
    StrCpy $0 $R0
    StrCmp $R0 3 0 error1empty
    StrCpy $3 '"+text" "-text"'
    goto error3

    WordInsert:
    ${WordInsert} "$R1" "$R2" "$R3" "$R4" $R0
    IfErrors 0 Send
    StrCpy $0 $R0
    StrCmp $R0 3 0 +3
    StrCpy $3 '"+1" "-1"'
    goto error3
    StrCmp $R0 2 0 error1empty
    StrCpy $R4 $R4 '' 1
    goto error2

    StrFilter:
    ${StrFilter} "$R1" "$R2" "$R3" "$R4" $R0
    IfErrors 0 Send
    StrCpy $R0 'Syntax error'
    goto Send

    VersionCompare:
    ${VersionCompare} "$R1" "$R2" $R0
    goto Send

    VersionConvert:
    ${VersionConvert} "$R1" "$R2" $R0
    goto Send

    error3:
    StrCpy $R0 '"$R4" syntax error ($3)'
    goto Send
    error2:
    StrCpy $R0 '"$R4" no such word number'
    goto Send
    error1empty:
    StrCpy $R0 '"$R2" delimiter is empty'
    goto Send
    error1:
    StrCpy $R0 '"$R2" delimiter not found in string'
    goto Send

    Send:
    GetDlgItem $1 $HWND 1205
    SendMessage $1 ${WM_SETTEXT} 1 "STR:$R0"
    GetDlgItem $1 $HWND 1206
    SendMessage $1 ${WM_SETTEXT} 1 "STR:$0"
    abort
FunctionEnd

Function .onInit
    InitPluginsDir
    GetTempFileName $INI $PLUGINSDIR
    File /oname=$INI "WordFunc.ini"
FunctionEnd

Page instfiles

Section "Empty"
SectionEnd