짧은 지식으로나마 조금 도움을 드리고자 참고하세요...
for i := 0 to cnt - 1 do begin
ach := buf[i];
case ach of
#13: Memo1.Lines.Add(aaa); // 받은 값의 마지막이 #13#10 으로 끝난다고 가정한 것입니다.
// 이부분에서 전화번호 골라내는 작업을 하세요.
else
aaa := aaa + ach;
end;
end;
영길선생 님이 쓰신 글 :
: ------------
: procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
: var
: buf : array[0..1024] of byte;
: str, str2, str3 : AnsiString;
: tmpStr : String;
: cnt, i : Integer;
: begin
: cnt := comport.InputCount;
: comport.Read(buf, cnt);
:
: str :='';
: str2 := '';
: for i := 0 to cnt - 1 do begin
: str := str + intToHex(byte(buf[i]), 2);
: str2 := str2 + AnsiChar(Buf[i]);
: end;
: Memo.Lines.Add('Hex : ' + str);
:
: end;
:
: -------------
:
: 시리얼 통신을 사용하여 메시지가 들어오면 그 메시지에서 전화번호만 추출할려고 합니다.
:
: str 을 출력해 보면
:
: CD 0E AF 81 0B 30 37 30 37 34 39 39 34 32 30 30
:
: 이런식으로 값이 들어 옵니다.
:
: CD 0E AF 81 0B 이 값을 기준으로 전화 번호가 들어오고 있다고 인식을 하게 만들고 싶습니다.
:
: 그런 후 전화번호 앞마다 붙어 있는 3을 제거 하는게 최종 목표 입니다.
:
: 어떻게 하면 되나요..
:
: 델파이 초보라서 문의 드립니다.
:
:
: CD 0E AF 81 0B 30 37 30 37 34 39 39 34 32 30 30
|