님이 쓰신 글 :
: 멀더 님이 쓰신 글 :
: : 델파이 XE 버전에 Cport4.11 버전을 사용합니다.
: :
: : ComDataPacket 컴포넌트로 OnPacket 이벤트로 시리얼포트 신호를 받아서 처리하는데...
: : 동일한 소스를 델파이7 버전으로 이상없이 잘 됩니다.
: :
: : 그런데...XE 버전에서는 원활하게 진행되지 않아서 테스트 하다보니...이상한것이..
: :
: : procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: string);
: : OnPacket 에서 받는 ...저..Str 에서..
: : 변수가 UnicodeString 이라서 그런가 싶어서...
: : var
: : sBuff : AnsiString;
: : iPos : integer;
: : ASCII : Char;
: : Dec : integer;
: : Hex : AnsiString;
: : begin
: : sBuff := Str;
: : iPos := Pos(chr($FF), sBuff); <------ '데이타는 FF 00 11' 이 있는 상태일때입니다.
: : // 이부분에서 iPos 값은 1이어야 하는데....아무리 해도 Pos값은 0만 되돌립니다.
: : // 이걸.... 확인하기 위해서 Pos 대신 아래 루틴을 돌려보면...
: : iLen := Length(sBuff);
: :
: : iPos := 0;
: : for i := 1 to iLen do
: : begin
: : ASCII := AnsiChar(sBuff[i]);
: : Dec := Ord(ReadData.ASCII);
: : Hex := IntToHex(ReadData.Dec, 2);
: :
: : if Dec = $FF then
: : begin
: : iPos := i;
: : Break;
: : end;
: : end;
: : ------>> 이순간에는 iPos 값이 잘 나옵니다.
: :
: :
: : Pos 함수에 문제가 있는걸까요 아니면 제가 Pos 함수에서 사용하는 String 에 대한 이해를 잘 못한걸까요??
: :
:
: 이렇게 해야 할지 않을 까요....
: iPos := Pos(Ansichar($FF), sBuff);
:
:
헛~!!
chr($FF)이....AnsiChar 이 아니라는걸 미처 생각하지 못했습니다...전혀~~ㅜ.ㅜ
감사합니다. ^^;
통신할때는 사소한것도 왠만하면 Ansi 로 일부러 지정해서 써야겠군요.
|