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
[27201] Re:Re:답변감사합니다. 그런데...
Starlet [starlet5] 658 읽음    2003-09-16 14:37
답변감사합니다. 그런데 printf에서 %s가 받는 값을 AnsiString 형식으로 해도 같은 결과를 얻을 수 있습니다. 차이가 나는 것은, 예를들어 Text가 AnsiString형이고 NULL일때 str.printf("%s", Text);은 str에 (null)이라는 문자열이 들어가고 Text.c_str()로 넘겨주면 NULL 포인터가 넘어가 Exception을 발생시킵니다.

Julien님이 제시해 주신 + 로 합치는 것도 좋은 방법이군요. 일단 이 방법으로 해결해야 겠습니다.
감사합니다.

흠.. 과연 (null)을 '' 로 대체하려면 헤더파일을 수정하거나 해서 원천적으로 바꿀수 있는 방법은 없을까요?

Julien 님이 쓰신 글 :
: printf에 들어가는 %s 의 인자는 AnsiString 이 아니라 문자열포인터입니다.
: 따라서 c_str() 함수를 이용하여 포인터로 변환해 주어야 합니다.
: str.printf("INSERT INTO Tbl (Name) VALUES ('%s')", Edit1->Text.c_str());
:
: AnsiString을 그대로 사용하시려면 이렇게 하시면 됩니다.
: str = "INSERT INTO Tbl (Name) VALUES ('" + Edit1->Text + "')";
:
: Starlet 님이 쓰신 글 :
: : 안녕하세요.
: : Edit1 에 있는 내용을 INSERT 쿼리를 사용해 DB에 저장하려면...
: :
: : AnsiString Str;
: :
: : Str.printf("INSERT INTO Tbl (Name) VALUES ('%s')", Edit1->Text);
: :
: : 저는 보통 이렇게해서 사용하는데 Edit1에 내용이 없으면 값으로 "(null)"이라는 문자열이 저장됩니다.
: : 그럼 나중에 이렇게 저장한 값을 DB에서 읽어 Edit1에 표시하면 "(null)"이라고 표시됩니다.
: : printf에서 이 (null) 이라는 문자 대신 그냥 공백으로('') 처리할수는 없나요?

+ -

관련 글 리스트
27186 [질문] NULL 대체문자 처리문제 Starlet 748 2003/09/16
27193     Re:[질문] NULL 대체문자 처리문제 Julien 1144 2003/09/16
27201         Re:Re:답변감사합니다. 그런데... Starlet 658 2003/09/16
27191     Re:[질문] NULL 대체문자 처리문제 sjlee 738 2003/09/16
33397         Re:Re:[질문] NULL 대체문자 처리문제 Starlet 701 2003/09/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.