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
[14840] Cport4.11 사용중에 문제입니다.. XE버전 Pos 함수가 이상한가요?
멀더 [borlandforum] 1934 읽음    2013-11-07 20:33
델파이 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 에 대한 이해를 잘 못한걸까요??

+ -

관련 글 리스트
14840 Cport4.11 사용중에 문제입니다.. XE버전 Pos 함수가 이상한가요? 멀더 1934 2013/11/07
14844     Re:Cport4.11 사용중에 문제입니다.. XE버전 Pos 함수가 이상한가요? 2022 2013/11/13
14850         Re:Re:Cport4.11 사용중에 문제입니다.. XE버전 Pos 함수가 이상한가요? 멀더 2102 2013/11/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.