[NSIS] 원본 문자열의 앞에서부터 원하는 문자의 인덱스 찾기

# 호출 예
# ${IndexOf} '반환' '찾을 문자열' '원본 문자열'
# ${IndexOf} $0 "bc" "abcd"
# $0 == 1

!macro _IndexOf un
	Function ${un}_IndexOf
		Exch $R0
		Exch
		Exch $R1
		Push $R2
		Push $R3

		StrCpy $R3 $R0
		StrCpy $R0 -1
		IntOp $R0 $R0 + 1
		StrCpy $R2 $R3 1 $R0
		StrCmp $R2 "" +2
		StrCmp $R2 $R1 +2 -3

		StrCpy $R0 -1

		Pop $R3
		Pop $R2
		Pop $R1
		Exch $R0
	FunctionEnd
!macroend
!insertmacro _IndexOf ""
!insertmacro _IndexOf "un."

!macro IndexOf OUTPUT str_find str_origin
	Push "${str_find}"
	Push "${str_origin}"

	!ifndef __UNINSTALL__
		Call _IndexOf
	!else
		Call un._IndexOf
	!endif

	Pop "${OUTPUT}"
!macroend

!define IndexOf "!insertmacro IndexOf"

댓글

이 블로그의 인기 게시물

[NSIS] 32비트와 64비트 모듈 등록하는 법. (regsvr32)

[Visual Studio] Windows 7 에서 Visual Studio 6.0 디버그 시 프로세스 좀비되는 증상 해결 방법