|
답변감사합니다. 그런데 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) 이라는 문자 대신 그냥 공백으로('') 처리할수는 없나요?
|