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
[9952] Re:Re:Re:Re:[질문] ParamStr에 대해서...
김성호 [poporone] 1439 읽음    2001-08-16 13:52
한가지 적지 않은것이 있군요....

AnsiString Name = ExtractFilePath(ParamStr(0))+"Main.Exe 111 222 333";
WinExec(Name.c_str(), SW_SHOWNORMAL);

위와같이 특정 프로그램을 실행 시킨다음에...

Main.exe에서

AnsiString Param1, Param2, Param3;
Param1 = ParamStr(1);   
Param2 = ParamStr(2);   
Param3 = ParamStr(3);   

이라고 하면

Param1 에는 ""  아무값도 안들어가 있고
Param2 에는 222
Param3 에는 333

이 들어가있더군요... 신기하지요?

로그인을 하면 로그인에서 WinExec로 메인 프로그램을 실행시키는데 직접 메인 프로그램을 실행시키지 못하게 하기 위해서 파라메터를 쓰는데 Param1값을 읽지 못하는 경우가 있어서 메인 프로그램이 실행이 안된다고 자꾸 연락이 오는군요...
프로그램은 C:\Program Files\Example과같은 식으로 깔려 있어서 260문자는 넘지 않습니다.




박지훈.임프 님이 쓰신 글 :
: 임프랍니다.
:
: 저도 신기하다 싶어서 좀 더 연구해봤는데... ParamStr()로 파라미터를 넘겨받을 때, 제대로 넘어오지 못할
: 한가지 가능성이 있습니다. 넘겨받는 실행파일과 파라미터의 전체 패스가 260 문자가 넘을 때입니다.
: 예를 들어 실행파일이 있는 디렉토리의 전체 패스가 무쟈게 길어져서 결과적으로 실행파일과 파라미터의 전체
: 길이가 260문자가 넘어가게 되면 Win95/98 계열에서 문제가 발생할 가능성이 있습니다.
:
: 이것은 실제로 그런 경우를 보았다는 것이 아니라, 제 추측입니다.
: 만약 해당 실행파일을 c:\ 등 짧은 패스의 디렉토리에서 실행했을 때 문제가 발생하지 않는다면 이 때문일
: 테고, 만약 그래도 계속 문제가 발생한다면 다른 문제겠지요.
:
: 만약 그래도 계속 문제가 발생한다면, 두가지 시도해볼 수 있는 가능성은 있습니다.
: 일단... GetCommandLine() 함수를 직접 호출하는 것입니다. 이 함수는 ParamStr() 함수가 내부적으로 호출
: 하는 Win32 API 함수입니다. 이 함수를 써도 문제가 계속 발생한다면 OS 자체의 문제라고밖에 볼 수가 없구요.
: 만약 그래도! 안된다면!! 프로젝트 소스에서 바로 WinMain() 함수의 lpCmdLine 파라미터로 읽어들여보세요.
: 그래도 안된다면?? 방법이 없겠지요. ^^;;
:
: 그럼 이만...
:
:
: 김성호 님이 쓰신 글 :
: : OS의 구분은 특별히 없습니다...제가 직접 확인한 것은 Win98에서구요...다른 PC는 잘 모르겠습니다.
: : 특정 프로그램을 수천명이 쓰다보니...희안한 경우가 다 생기는군요...
: :
: : 박지훈.임프 님이 쓰신 글 :
: : : 임프랍니다.
: : :
: : : 특정 피시에서 안된다고 하셨는데, 일단 저로서는 실행파일의 인자가 ParamStr로 넘어오지 않는 경우는
: : : 보지 못했습니다. 말씀하신 특정 피시의 OS나 사양같은 정보를 올려주시면 참고가 되겠군요.
: : :
: : : 그럼 이만...
: : :
: : :
: : : 김성호 님이 쓰신 글 :
: : : : AnsiString Name = ExtractFilePath(ParamStr(0))+"Main.Exe 1111";
: : : : WinExec(Name.c_str(), SW_SHOWNORMAL);
: : : :
: : : :
: : : : 위와같이 특정 프로그램을 실행 시킨다음에...
: : : :
: : : : Main.exe에서
: : : :
: : : : AnsiString Param = ParamStr(1);
: : : : 이라고 했을때.... 일반적으로 Param의 값에 1111이 들어오는데....
: : : :
: : : : 가끔...특정PC에서 Param에 아무런 값이 들어가지 않습니다...
: : : : 이유가 뭘까요?
: : : :
: : : : 윈도우 문제일까요?

+ -

관련 글 리스트
9872 [질문] ParamStr에 대해서... 김성호 925 2001/08/14
9896     Re:[질문] ParamStr에 대해서... 박지훈.임프 911 2001/08/14
9937         Re:Re:[질문] ParamStr에 대해서... 김성호 979 2001/08/16
9949             Re:Re:Re:[질문] ParamStr에 대해서... 박지훈.임프 1172 2001/08/16
9952                 Re:Re:Re:Re:[질문] ParamStr에 대해서... 김성호 1439 2001/08/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.