안녕하세요. 델파이 초심자 입니다.
제목과는 좀 다르게 정확하게 말하자면 레지스트리에서 컴포트 목록을 가져와서 포트번호만 추출한후에
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함수에서 에러가 나야하는거 아닌가 싶기도하고. 원인을 못 찾겠어서 이렇게 글올립니다.
|