응용프로그램이 등록 정보의 값을 가져오면 값은
XMS에 의해 다른
데이터 유형으로 변환될 수 있습니다. 지원되는 변환 및 XMS의
변환 수행 방법에 적용되는 몇 가지 규칙이 있습니다.
오브젝트의 등록 정보에는 이름과 값이 있으며 값에는 연관된 데이터 유형이
있습니다. 등록 정보 값의 데이터 유형을 등록 정보 유형이라고도 합니다.
응용프로그램은 PropertyContext 클래스의 메소드를 사용하여 오브젝트의
등록 정보를 가져오고 설정합니다. 등록 정보의 값을 가져오기 위해 응용프로그램은
등록 정보 유형에 해당하는 메소드를 호출합니다. 예를 들어 정수 등록 정보의
값을 가져올 경우 응용프로그램은 Get Integer Property 메소드를 호출합니다.
그러나 응용프로그램이 등록 정보의 값을 가져오면 값은
XMS에 의해 다른
데이터 유형으로 변환될 수 있습니다. 예를 들어 정수 등록 정보의 값을
가져올 경우 응용프로그램은 등록 정보의 값을 문자열로 리턴하는 Get String Property
메소드를 호출할 수 있습니다. XMS에
지원되는 변환은 표 1에 설명되어 있습니다.
표 1. 등록 정보 유형에서 다른 데이터 유형으로 지원되는 변환 등록 정보 유형 |
지원되는 대상 데이터 유형 |
string |
xmsBOOL, xmsDOUBLE, xmsFLOAT, xmsINT, xmsLONG, xmsSBYTE,
xmsSHORT |
xmsBOOL |
String, xmsSBYTE, xmsINT, xmsLONG, xmsSHORT |
xmsCHAR |
string |
xmsDOUBLE |
string |
xmsFLOAT |
String, xmsDOUBLE |
xmsINT |
String, xmsLONG |
xmsLONG |
string |
xmsSBYTE |
String, xmsINT, xmsLONG, xmsSHORT |
xmsSBYTE array |
string |
xmsSHORT |
String, xmsINT, xmsLONG |
지원되는 변환에 적용되는 일반 규칙은 다음과 같습니다.
- 변환 도중 데이터가 손실되지 않으면 숫자 등록 정보 값은 다른 데이터
유형으로 변환될 수 있습니다. 예를 들어 데이터 유형이 xmsINT인 등록 정보
값은 데이터 유형이 xmsLONG인 값으로 변환될 수 있지만 데이터 유형 xmsSHORT의
값으로 변환될 수 없습니다.
- 데이터 유형의 등록 정보 값은 문자열로 변환될 수 있습니다.
- 문자열이 변환에 맞게 형식화된 경우 문자열 등록 정보 값은 다른
데이터 유형으로 변환될 수 있습니다. 응용프로그램이 올바로 형식화되지
않은 문자열 등록 정보 값을 변환하려고 하면 XMS
오류 코드 XMS_E_NUMBER_FORMAT_ERROR를 리턴합니다.
- 응용프로그램이 지원되지 않는 변환을 시도하면 XMS
오류 코드 XMS_E_TYPE_CONVERSION_FAILED를 리턴합니다.
한 데이터 유형에서 다른 데이터 유형으로의 등록 정보 값 변환에 대한
특정 규칙은 다음과 같습니다.
- 부울 등록 정보 값을 문자열로 변환하면 xmsTRUE 값은 문자열 "true"로
변환되고 값 false는 문자열 "false"로 변환됩니다.
- 부울 등록 정보 값을 xmsSBYTE를 포함하여 숫자 데이터 유형으로 변환하면
값 xmsTRUE는 1로 변환되고 값 xmsFALSE는 0으로 변환됩니다.
- 문자열 등록 정보 값을 부울 값으로 변환하면 문자열 "true"(대소문자를
구분하지 않음) 또는 "1"은 xmsTRUE로 변환되고 문자열 "false"(대소문자를
구분하지 않음) 또는 "0"은 xmsFALSE로 변환됩니다. 다른 문자열은 변환될
수 없습니다.
- 문자열 등록 정보 값을 데이터 유형이 xmsINT, xmsLONG, xmsSBYTE 또는 xmsSHORT인
값으로 변환할 경우 문자열의 형식은 다음과 같아야 합니다.
문자열 구성요소의 의미는 다음과 같습니다.
- blanks
- 선택적 선행 공백 문자
- sign
- 선택적 더하기 부호(+) 또는 빼기 부호(-) 문자
- digits
- 숫자의 연속 순서(0-9). 최소한 하나의 숫자가 있어야 합니다.
문자열은 숫자의 연속 뒤에 숫자가 아닌 다른 문자를
포함할 수 있지만 이러한 문자의 첫번째에 이르면 변환이 중지합니다. 문자열은
10진 정수를 나타냅니다.
XMS 문자열이
올바로 형식화되지 않은 경우 오류 코드 XMS_E_NUMBER_FORMAT_ERROR를 리턴합니다.
- 문자열 등록 정보 값을 데이터 유형 xmsDOUBLE 또는 xmsFLOAT의 값으로
변환할 경우 문자열의 형식은 다음과 같아야 합니다.
- [blanks][sign]digits[e_char[e_sign]e_digits]
문자열 구성요소의 의미는 다음과 같습니다. - blanks
- 선택적 선행 공백 문자
- sign
- 선택적 더하기 부호(+) 또는 빼기 부호(-) 문자
- digits
- 숫자의 연속 순서(0-9). 최소한 하나의 숫자가 있어야 합니다.
- e_char
- 지수 문자, E 또는 e
- e_sign
- 지수의 선택적 더하기 부호(+) 또는 빼기 부호(-) 문자
- e_digits
- 지수의 연속 숫자(0-9). 문자열에 지수 문자가 포함되면 최소한 하나의 숫자가 있어야 합니다.
문자열은 숫자의 연속 또는 지수를 나타내는 선택적 문자
뒤에 숫자가 아닌 다른 문자를 포함할 수 있지만 이러한 문자의 첫번째에 이르면
변환이 중지합니다. 문자열은 power 10 지수의 10진 부동 소수점을 나타냅니다.
XMS 문자열이
올바로 형식화되지 않은 경우 오류 코드 XMS_E_NUMBER_FORMAT_ERROR를 리턴합니다.
- 데이터 유형 xmsSBYTE의 등록 정보 값을 포함하여 숫자 등록 정보 값을
문자열로 변환하면 값은 10진수로서 값의 문자열 표시로 변환되고 해당 값의
ASCII 문자가 들어 있는 문자열로 변환되지 않습니다. 예를 들어 정수 65는
문자열 "65"로 변환되고 문자열 "A"로 변환되지 않습니다.
- 바이트 배열 등록 정보 값을 문자열로 변환하면 각 바이트는 바이트를
표시하는 두 개의 16진 문자로 변환됩니다. 예를 들어 바이트 배열
{0xF1, 0x12, 0x00, 0xFF}은 문자열 "F11200FF"로 변환됩니다.
등록 정보 유형에서 다른 데이터 유형으로의 변환은 Property와 PropertyContext
클래스의 메소드에 의해 지원됩니다. 그러나 C 함수 xmsPropertyGetStringByRef()와 xmsGetStringPropertyByRef()는
문자열이 아닌 등록 정보 값을 변환하지 않습니다. 응용프로그램이 이러한 함수를 호출하여
문자열이 아닌 등록 정보 값으로 포인터를 가져오면
XMS 오류 코드
XMS_E_TYPE_CONVERSION_FAILED를 리턴합니다.