|
Ponoffchk(int i, AnsiString PRead)
이 함수에서 PRead가 AnsiString이라 넘어갈때 아무 문제가 없을것 같은데요..
그래고 님이 말하는 에러도 컴파일 에러가 아니라.
00E0이 들어있는 스트링을 숫자로 변환할때 발생하는 에러가 아닌가요?
님이 사용하는 숫자 데이터를 보건데 추측이지만
16진수를 사용하는 것 같습니다.
이럴경우 그냥 10진수 숫자로 변환하는건 의미도 없고
문자 A~F 가 들어있으면 에러가 뜨는건 당연하겠지요.
이럴때는 "0x00E0"처럼 앞에 "0x"를 붙여서 변환해 보세요.
그럼 될겁니다.
: Temp1 = StrToInt("0x" + PRead.SubString(1,1));
// 이러면 될거 같은데요..
근데 무엇에 쓰는 코드인지.. ^^;
강영준 님이 쓰신 글 :
: 아래 소스에서 P1Readvalue 에 스트링 값으로 "00E0"이 들어 있을때..
:
: Ponoffchk함수로 넘어 갈경우 에러가 생기드라구요.. "E"를 보낼수 없다그러든거 같든데.
:
: 숫자로만 "0020" 된건 아무 문제 없이 함수를 호출 할수 있는데..
:
: 도대체.. 이넘을 어떻게 해결을 해야 할지 모르겠네요.
:
: AnsiString 이란넘 편할땐 무지 편하드니만.
:
: char *ch[5] 이런걸 다른 함수에다 넘길려면.. 함수를 어떻게 정의해줘야 하나요?
:
:
: void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
: {
: AnsiString Str;
:
: ComPort1->ReadStr(Str,Count);
:
: if(Count != 7) {
: Str1 = Str1 + Str;
: if(Count != 7 && Str.SubString(Count,1) == ETX) {
: P1Readvalue = (Str1.SubString(11,4));
: P2Readvalue = (Str1.SubString(17,4));
: P3Readvalue = (Str1.SubString(23,4));
: Str1="";
: Ponoffchk(1,P1Readvalue);
: // Memo3->Lines->Add(P1Readvalue);
: Ponoffchk(2,P2Readvalue);
: // Memo3->Lines->Add(P2Readvalue);
: Ponoffchk(3,P3Readvalue);
: // Memo3->Lines->Add(P3Readvalue);
: }
: }
: Memo1->Lines->Add(Str);
: Memo1->Lines->Add(Count);
: }
:
: void __fastcall TForm1::Ponoffchk(int i, AnsiString PRead)
: {
: int Temp1,Temp2,Temp3,Temp4;
:
: Memo2->Lines->Add(PRead);
: Temp1 = StrToInt(PRead.SubString(1,1));
: Binarychk(i,12,Temp1);
: Temp2 =StrToInt(PRead.SubString(2,1));
: Binarychk(i,8,Temp2);
: Temp3 =StrToInt(PRead.SubString(3,1));
: Binarychk(i,4,Temp3);
: Temp4 =StrToInt(PRead.SubString(4,1));
: Binarychk(i,0,Temp4);
:
: }
|