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

델파이 Q&A
Delphi Programming Q&A
[15697] [질문]DLL라이브러리에 Integer형 파라미터가 제대로 전달이 안됩니다.
황희성 [pass3008] 1958 읽음    2016-05-02 12:39
안녕하세요. 델파이 초심자 입니다.
제목과는 좀 다르게 정확하게 말하자면 레지스트리에서 컴포트 목록을 가져와서 포트번호만 추출한후에
DLL라이브러리에 포트번호를 전달해주면 포트를 여는 부분인데. 라이브러리는 C++로 만들어진겁니다.
포트를 여는 함수는 라이브러리에 이렇게 정의 되어있습니다.

CATSerialPort(int portNum, int baudrate) <-- 연동 매뉴얼에 이렇게 되어있음.

델파이에서 함수 정의는 이렇게 했구요.

CATSerialPort(portNum: Integer; baudrate: Integer) : Integer; stdcall; external 'ksnetcomm.dll';

다음은 포트번호를 가져와서 파라미터로 넘겨주는 소스입니다.

reg.GetValueNames(stKeys);
strNum := StringReplace(reg.Readstring(stKeys.strings[0]), 'COM', '', [rfReplaceAll]);
nPort := StrToInt(strNum);
CATSerialPort(nPort, 38400);

위와 같이 하면 정상 작동을 안하고 신기하게 아래와 같이 하면 정상 작동을 합니다.
Ex1) nPort := '4';
Ex2) strNum := '4'; nPort := StrToInt(strNum);
Ex3) CATSerialPort(4, 38400);
Ex4) CATSerialPort(StrToInt('4'), 38400);

제가 파악하기엔 레지스트리에서 가져오는 값에 뭔가 보이지 않는 문자나 그런게 섞여들지 않았나 싶기도 한데
근데 그럼 StrToInt함수에서 에러가 나야하는거 아닌가 싶기도하고. 원인을 못 찾겠어서 이렇게 글올립니다.

+ -

관련 글 리스트
15697 [질문]DLL라이브러리에 Integer형 파라미터가 제대로 전달이 안됩니다. 황희성 1958 2016/05/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.