StrPut() / StrGet() [v1.0.90+]
문자열을 메모리 주소에 또는 메모리 주소로부터 복사합니다. 선택적으로 주어진 코드 페이지 사이에 변환합니다.
StrPut(String [, Encoding = None ] ) StrPut(String, Address [, Length] [, Encoding = None ] ) StrGet(Address [, Length] [, Encoding = None ] )
매개변수
- String
문자열, 숫자도 받을 수 있습니다.
- Address
문자열을 읽고/쓸 주소.
- Length
읽고/쓸 문자의 최대 개수, 필요하면 널-종료 문자 포함. 반환 값을 참조하십오.
- Encoding
StrGet에 대한 소스 인코딩 또는 StrPut에 대한 타겟 인코딩; 예를 들어, "UTF-8", "UTF-16" or "CP936". Address와 Length를 지정하지 않으면, 숫치 식별자 앞에 "CP"를 붙여야 하니다. 빈 문자열이나 "CP0"을 지정하면 시스템 기본 ANSI 코드 페이지를 사용합니다.
반환 값
각 함수에 대하여, 무효한 매개변수는 빈 문자열을 돌려줍니다.
StrPut은 씌여진 문자의 개수를 돌려줍니다. Address가 주어지지 않으면 문자단위로 필요한 버퍼 크기를 돌려주고 에러가 일어나면 0을 돌려줍니다. Length가 소스 문자열이 길이보다 작으면, 함수는 실패하고 0을 돌려줍니다. Length가 정확하게 소스 문자열의 길이이면, 문자열은 널-문자로 종료하지 않습니다; 그렇지 않으면 반환된 개수는 널 문자를 포함합니다.
StrGet은 필요한 변환을 수행한 후 요청된 문자열을 길이를 돌려줍니다.
논평
StrPut의 String 매개변수와 StrGet의 반환값은 언제나 현재 실행 파일의 고유 인코딩을 따릅니다. 반면에 Encoding은 주어진 Address에 읽고 쓸 문자열의 인코딩을 지정합니다. Encoding을 지정하지 않으면, 그 문자열은 그냥 아무 변환도 일어나지 않고 그대로 복사되거나 측정됩니다.
코드 페이지 사이의 변환이 필요하면, 필요한 버퍼 크기는 소스 String의 크기에 따라 달라질 수 있습니다.
스크립트가 AutoHotkey Basic과의 호환을 필요로 하면 여전히 StrPut과 StrGet을 사용할 수 있습니다. 단 적절한 스크립트 파일들이 함수 라이브러리에 설치되어 있어야 합니다. 이런 스크립트들은 오토핫키 공동체 포럼에서 발견할 수 있습니다.
관련 항목
스크립트 호환성, FileEncoding, VarSetCapacity()
예제
Length나 Encoding을 Address 다음에 직접적으로 지정할 수 있습니다. 그러나 그런 경우 Encoding은 절대로 숫치형이 되면 안 됩니다:
strA := StrGet(addressA, "cp0") ; OK strA := StrGet(addressA, length, 0) ; OK strA := StrGet(addressA, 0) ; Error
StrPut은 특정한 인코딩으로 문자열에 대하여 필요한 버퍼 크기를 계산하기 위하여 한 번 호출이 가능합니다. 다음, 그 문자열을 인코드해서 버퍼 안으로 써 넣을 수 있습니다. 자주 변수를 StrPut과 함께 사용한다면, 다음과 같은 함수를 여러분의 라이브러리에 넣어 보십시오:
StrPutVar(string, ByRef var, encoding) { ; 가용능력을 확인합니다. VarSetCapacity( var, StrPut(string, encoding) ; StrPut은 문자 개수를 돌려주지만, VarSetCapacity는 바이트를 필요로 합니다. * ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) ) ; 그 문자열을 복사하거나 변환합니다. return StrPut(string, &var, encoding) }