123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- ; StrContains
- ; This function does a case sensitive searches for an occurrence of a substring in a string.
- ; It returns the substring if it is found.
- ; Otherwise it returns null("").
- ; Written by kenglish_hi
- ; Adapted from StrReplace written by dandaman32
-
-
- Var STR_HAYSTACK
- Var STR_NEEDLE
- Var STR_CONTAINS_VAR_1
- Var STR_CONTAINS_VAR_2
- Var STR_CONTAINS_VAR_3
- Var STR_CONTAINS_VAR_4
- Var STR_RETURN_VAR
-
- Function StrContains
- Exch $STR_NEEDLE
- Exch 1
- Exch $STR_HAYSTACK
- ; Uncomment to debug
- ;MessageBox MB_OK 'STR_NEEDLE = $STR_NEEDLE STR_HAYSTACK = $STR_HAYSTACK '
- StrCpy $STR_RETURN_VAR ""
- StrCpy $STR_CONTAINS_VAR_1 -1
- StrLen $STR_CONTAINS_VAR_2 $STR_NEEDLE
- StrLen $STR_CONTAINS_VAR_4 $STR_HAYSTACK
- loop:
- IntOp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_1 + 1
- StrCpy $STR_CONTAINS_VAR_3 $STR_HAYSTACK $STR_CONTAINS_VAR_2 $STR_CONTAINS_VAR_1
- StrCmp $STR_CONTAINS_VAR_3 $STR_NEEDLE found
- StrCmp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_4 done
- Goto loop
- found:
- StrCpy $STR_RETURN_VAR $STR_NEEDLE
- Goto done
- done:
- Pop $STR_NEEDLE ;Prevent "invalid opcode" errors and keep the
- Exch $STR_RETURN_VAR
- FunctionEnd
-
- !macro _StrContainsConstructor OUT NEEDLE HAYSTACK
- Push `${HAYSTACK}`
- Push `${NEEDLE}`
- Call StrContains
- Pop `${OUT}`
- !macroend
-
- !define StrContains '!insertmacro "_StrContainsConstructor"'
|