|
제가 2009를 써보지 않아서 정확히 테스트 해 확인해 봐드릴수가 없기는 한데요
2009부터 String을 기본적으로
AnsiString이 아니라 UnicodeString입니다.
알파벳이나 숫자 한개라도 1Byte이상이 됩니다.
그래서 짤리는것 같네요
StrToInt함수는 어떻게 되어있는지 궁금하네요
char buffer를 AnsiString으로 변환하는지...
위 코드에서 String을 AnsiString으로 바꿔서 해보세요
음 그리고
배포할때 runtime-package를 off 해야되는것은 아닙니다.
dll이나 bpl없이 실행파일 딱 하나만 배포하고자 할때 runtime-package를 off하는것입니다.
개인적으로 runtime-pakcage를 on해서 배포하는것을 권합니다.
실행파일 size도 작아지고 dll이나 bpl모듈이 들어갈경우 해당 모듈만 수정및 업그레이드가 용이하구
특히 dll(bcb로 만든) 을 쓸경우 runtime-package를 사용하지 않으면 여러가지 심각한 문제가 많이 발생합니다.
그럼..
한수동 님이 쓰신 글 :
: 흠.. 저는 4자리 3자리 전부 잘 뜨는데요;;
:
: 에러가 뜨는것은 제가 왜그런지 잘 모르겠지만
:
: 프로그램을 배포하실때 런타임 패키지 체크박스를 꺼야 되는것은 알고있습니다
: 그리고 C++ Linker의 Dynamic RTL도 false로 맞추어야 되구요
:
: 체크박스를 껐다가 다시 켰는데도 에러가 나는 부분도 잘 모르겠군요;
:
: 죄송합니다 제가 초보라 이정도 밖에 알려 드릴수가 없네요
: 한번 프로젝트를 새로 다시 만들어서 소스를 복사한다음 다시 해보세요 그러면 될 수도 있어요 저도 가끔 그러거든요;
:
:
: 복이 님이 쓰신 글 :
: : 안녕하세요.. 조금 황당한 일이 생겨서그러는데 도움 좀 부탁드립니다..
: :
: : 프로젝트를 생성해서 코딩 후 IDE가 있는 컴에서 실행하면 정상적으로 동작하는데, 다른 컴퓨터로 파일을 옮겨서 실행 시키면 error를 뿌립니다.. 아래는 코딩한 코드입니다...(개발툴은 C++빌더2009입니다.)
: :
: : String str = "abc1234";
: : char buff[20];
: : int ibuff;
: :
: : memset(buff, 0, sizeof(buff));
: : strncpy(buff, str.t_str()+3, 4);
: : ibuff = StrToInt(buff);
: : Label1->Caption = ibuff;
: :
: : 이상하게도 str의 숫자부분이 3자리 숫자 이하이면 정상으로 출력이 되는데, 4자리 숫자가 되면 첨부파일 처럼 error를 뿌립니다.. 그래서, runtime package부분의 check를 해제 시킨 후 컴파일, 실행시키면 또, 정상적으로 실행됩니다...
: :
: : 이런, 어디에다 장단을 맞추어야 할지...
: :
: : 또, runtime package부분의 check를 해제 시켰다가 다시 check를 한 상태에서 컴파일 하면 링크 에러가 발생합니다..
: : 얘는 저를 더 미치게 합니다..
: :
: : 무엇때문에 이런 현상이 발생하는지 고수님들이 조언을 부탁드립니다..
|