|
정말 미안하지만 어디부터 설명을 드려야 할지 난감하군요.
ComPort1 이 클래스가 통신 클래스인것 같은데 Read, Write를 AnsiString 으로 하니 이상할 따름 입니다. 요쿠르트님은 일반 배열, 포인터, 클래스 operator overloading 함수에 대한 구분이 안가시는것 같습니다.
AnsiString str1 = "123";
AnsiString str2;
str2.sprintf( "%c%c%c", str1[1], str1[2], str1[3] );
ShowMessage( str2 );
이런 식으로 사용 하는건 실제 배열이 아닙니다. 연산자 오버로딩입니다.
여기서 보시면 알겠지만 인덱스의 시작이 0이 아닌 1입니다.
char str1[] = "123";
AnsiString str2;
str2.sprintf( "%c%c%c", str1[0], str1[1], str1[2] );
ShowMessage( str2 );
이것은 문자 배열을 사용한 겁니다. 같은 결과가 나오져.
Byte str1[] = { 0x31, 0x32, 0x33 };
AnsiString str2;
str2.sprintf( "%c%c%c", str1[0], str1[1], str1[2] );
ShowMessage( str2 );
이것은 문자열은 아니지만 배열을 사용한 겁니다. 초기화 방법이 다르지요?
만약에 "0x31, 0x32, 0x33" 이란 문자열을 표현하고 싶다면.
str2.sprintf( "0x%02X, 0x%02X, 0x%02X", str1[0], str1[1], str1[2] );
ShowMessage( str2 );
이렇게 하시면 됩니다.
이해가 안가신다면 화내시지 마시고 C, C++ 공부를 하세요.
문법책 다 봤다고 자기것이 된건 아니랍니다.
응용해보기 전엔 그림의 떡일 뿐이죠.
부디 조급해 하지 마시고 기초 공부를 많이 하시기 바랍니다.
기초가 강한 사람은 상위 지식이 부족하더라도 걱정하지 않는답니다.
필요하면 빠른시간안에 자기것으로 만들수 있다는 자신감이 있기 때문이죠.
그럼 요쿠르트님도 내공이 강한 프로그래머가 되시길 빌며 이만..
참고로 전 영원한 중수입니다... 부끄럽지만 사실이니까...^^;;
|