C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[1609] [답변] 존재무상/ TRichEdit의 각 줄 정렬방법?/프포
박지훈.임프 [cbuilder] 3790 읽음    1999-07-17 21:16
안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당 임펠리테리입니다.

먼저.. TStringList가 오름차순 정렬을 지원하지 않는다고 하셨는데, 잘못 아신 것

같습니다. TStrings에는 소트 메소드가 없지만, TStringList에는 Sort() 메소드가

존재합니다. 리치에디트의 Lines 프로퍼티는 TStrings 형이므로, 이것을 사용하려면

임시로 TStringList형 객체를 만들어서 리치에디트의 Lines를 Assign한 후 소트하고

다시 거꾸로 Assign하면 됩니다.


그리고, 보여주신 소스에서 잘못된 부분은...

아직 빌더의 프로퍼티, 속성이라는 개념을 잘 이해하시지 못하신 것 같습니다.

프로퍼티는 일반적인 변수처럼 사용하지만, 사실은 그 내부는 read 억세스와 write

억세스에 따라 내부적으로 정의된 Set...() 메소드와 Get...() 메소드로 되어 있습

니다. 물론 메소드 대신 내부적인 프라이빗 변수로 사용하는 방법도 있습니다만,

이경우에도 빌더는 포인터 연산을 허용하지 않습니다.

다른 방법을 생각해본다고 하여 문자열의 포인터를 리턴해주는 안시스트링의

멤버함수인 c_str()을 사용해도 에러가 납니다. 여기서 리턴한 포인터는, 아래 다른

질문에도 한번 답변했지만, 안시스트링 클래스의 내부에서 사용하는 데이터의

포인터일 뿐이므로 여기다가 write동작을 한다든지 포인터의 값을 바꾸면 제깍

억세스 바이얼레이션이 발생합니다.

다시 말해서.. Lines->Strings[] 프로퍼티의 포인터를 받아 서로 치환할 방법은 전혀

없습니다. 직접 문자열을 복사해야만 합니다.

그럼 참고하시길...




임펠리테리 박지훈이었습니다.

(http://myhome.thrunet.com/~cbuilder, cbuilder@thrunet.com)



+ -

관련 글 리스트
1596 [질문] TRichEdit의 각 줄 정렬방법?/프포 존재무상 3792 1999/07/17
1599     [답변] 존재무상/ TRichEdit의 각 줄 정렬방법?/프포 박지훈.임프 3558 1999/07/17
1609     [답변] 존재무상/ TRichEdit의 각 줄 정렬방법?/프포 박지훈.임프 3790 1999/07/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.