문자열 검색 위치
FIND_AFTER_POS는 시작 위치 P에서 시작하여 첫 번째 입력 문자열 IN1에서 두 번째 입력 문자열 IN2가 발생하는 위치를 반환합니다. 결과는 출력 변수에 작성됩니다. 두 번째 입력 문자열이 첫 번째 입력 문자열에서 발생하지 않으면 ZERO(0) 값이 반환됩니다.
입력
시작 입력 문자열
입력 문자열에서 검색되는 대/소문자를 구분하는 문자열
검색할 입력 문자열의 시작 위치입니다. 여기서 1은 문자열의 첫 번째 문자입니다.
출력
검색된 문자열이 있는 위치
값이 0보다 큰 경우: 검색된 문자열이 있는 위치입니다. 여기서 1은 첫 번째 문자를 나타냅니다
값이 0인 경우: 검색 문자열을 찾을 수 없습니다.
이 명령을 UTF-8 문자열과 함께 사용하는 경우, 데이터 유형 STRING에서 UTF-8 문자열에 대한 메모를 참조하십시오.
문자열이 [형식] 선언 필드에서 입력 변수(IN1 및 IN2)에 정의된 길이보다 긴 경우 에러가 발생합니다(에러 처리는 sys_bIsCarry 참조).
입력 또는 출력에 적용된 문자열이 유효하지 않은 문자열인 경우
입력 또는 출력에 적용된 문자열이 유효하지 않은 문자열인 경우
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bStart: BOOL:=FALSE;
sInputString: STRING[32]:='A better life. A better world.';
sSearchString: STRING[32]:='A';
iStartPos: INT:=8;
iFoundPos: INT:=0;
END_VAR
이 예에서 입력 변수 sSearchString 및 sInputString이 선언됩니다. 대신 문자열을 펑션에 직접 입력할 수 있습니다. POU 헤더와 펑션 모두에서 문자열은 따옴표 안에 있을 수 있습니다.
sSearchString은 시작 위치 8에서 시작되는 sInputString에서 검색됩니다. 위치 8 이후의 첫 발생 위치는 iFoundPos에 작성됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_F,E_FIND_AFTER_POS!,,19,1,28,7,,?DEN?DIN1?DIN2?DP?AENO?C);
B(B_VARIN,,sInputString,17,3,19,5,);
B(B_VARIN,,sSearchString,17,4,19,6,);
B(B_VARIN,,iStartPos,17,5,19,7,);
B(B_VAROUT,,iFoundPos,28,3,30,5,);
B(B_CONTACT,,bStart,13,2,15,4,);
L(1,3,13,3);
L(15,3,19,3);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF bStart then
iFoundPos:= FIND_AFTER_POS(sInputString, sSearchString);
END_IF;