Q&A

  • Value assign to icn(intCount)never used 라는 에러
if Ord (PDU[i]) = $02 then begin

if intCount < 4 then begin

lenPDU := Ord (PDU[i + 1]);



for j := (i + 2) to (i + 2 + lenPDU - 1) do begin

tmpCommand := tmpCommand + PDU[j];

end;



// Version

if intCount = 0 then begin

if Ord (tmpCommand[1]) = $00 then

list2.Items.Add ('Version: Ver1')

else

list2.Items.Add ('Version: Ver2');

intCount := intCount + 1;

end



// Generic trap

else if intCount = 1 then begin

list2.Items.Add ('Generic Trap: ' + IntToStr (Ord (tmpCommand[1])));

intCount := intCount + 1;

end

// Specific Trap

else if intCount = 2 then begin

list2.Items.Add ('Specific Trap: ' + IntToStr (Ord (tmpCommand[1])));

intCount := intCount + 1;

end;

end;

end



소스는 위와 같습니다. 그런데 제목에서와 같은 에러 메시지가 inc(intCount)에서 일어나길래 inc(intCount)를 intCount := intCount + 1 로 했습니다.

그래도 똑같은 메시지가 나기 때문에 제 생각에는 컴파일러가 intCount := intCount + 1이라는 문장을 읽지 않고 지나간다고 생각합니다.

왜 그럴까요?

혹시나 아시는 분의 답을 기다립니다.







3  COMMENTS
  • Profile
    최용일 2000.02.21 12:40
    최 소 영 wrote:

    > if Ord (PDU[i]) = $02 then begin

    > if intCount < 4 then begin

    > lenPDU := Ord (PDU[i + 1]);

    >

    > for j := (i + 2) to (i + 2 + lenPDU - 1) do begin

    > tmpCommand := tmpCommand + PDU[j];

    > end;

    >

    > // Version

    > if intCount = 0 then begin

    > if Ord (tmpCommand[1]) = $00 then

    > list2.Items.Add ('Version: Ver1')

    > else

    > list2.Items.Add ('Version: Ver2');

    > intCount := intCount + 1;

    > end

    >

    > // Generic trap

    > else if intCount = 1 then begin

    > list2.Items.Add ('Generic Trap: ' + IntToStr (Ord (tmpCommand[1])));

    > intCount := intCount + 1;

    > end

    > // Specific Trap

    > else if intCount = 2 then begin

    > list2.Items.Add ('Specific Trap: ' + IntToStr (Ord (tmpCommand[1])));

    > intCount := intCount + 1;

    > end;

    > end;

    > end

    >

    > 소스는 위와 같습니다. 그런데 제목에서와 같은 에러 메시지가 inc(intCount)에서 일어나길래 inc(intCount)를 intCount := intCount + 1 로 했습니다.

    > 그래도 똑같은 메시지가 나기 때문에 제 생각에는 컴파일러가 intCount := intCount + 1이라는 문장을 읽지 않고 지나간다고 생각합니다.

    > 왜 그럴까요?

    > 혹시나 아시는 분의 답을 기다립니다.

    >

    >



    변수에 값을 넣어 놓고 한번도 사용하지 않은 경우 발생합니다. 이런 경우 그 라인을

    지우더라도 아주 똑같은 결과를 얻을 수 있습니다. 사용자가 지우지 않으면 델파이가

    컴파일하는 과정에서 자동으로 제거(optimization이 참으로 설정
  • Profile
    최용일 2000.02.21 12:36
    최 소 영 wrote:

    > if Ord (PDU[i]) = $02 then begin

    > if intCount < 4 then begin

    > lenPDU := Ord (PDU[i + 1]);

    >

    > for j := (i + 2) to (i + 2 + lenPDU - 1) do begin

    > tmpCommand := tmpCommand + PDU[j];

    > end;

    >

    > // Version

    > if intCount = 0 then begin

    > if Ord (tmpCommand[1]) = $00 then

    > list2.Items.Add ('Version: Ver1')

    > else

    > list2.Items.Add ('Version: Ver2');

    > intCount := intCount + 1;

    > end

    >

    > // Generic trap

    > else if intCount = 1 then begin

    > list2.Items.Add ('Generic Trap: ' + IntToStr (Ord (tmpCommand[1])));

    > intCount := intCount + 1;

    > end

    > // Specific Trap

    > else if intCount = 2 then begin

    > list2.Items.Add ('Specific Trap: ' + IntToStr (Ord (tmpCommand[1])));

    > intCount := intCount + 1;

    > end;

    > end;

    > end

    >

    > 소스는 위와 같습니다. 그런데 제목에서와 같은 에러 메시지가 inc(intCount)에서 일어나길래 inc(intCount)를 intCount := intCount + 1 로 했습니다.

    > 그래도 똑같은 메시지가 나기 때문에 제 생각에는 컴파일러가 intCount := intCount + 1이라는 문장을 읽지 않고 지나간다고 생각합니다.

    > 왜 그럴까요?

    > 혹시나 아시는 분의 답을 기다립니다.

    >

    >



    변수에 값을 넣어 놓고 한번도 사용하지 않은 경우 발생합니다. 이런 경우 그 라인을

    지우더라도 아주 똑같은 결과를 얻을 수 있습니다. 사용자가 지우지 않으면 델파이가

    컴파일하는 과정에서 자동으로 제거(optimization이 참으로 설정
  • Profile
    이재식 2000.02.11 05:08
    이재식 Wrote :

    안녕하세요?



    제 생각에는 소스의 문법 자체에는 이상이 없습니다만,

    왠지 의심쩍인 코딩들이 좀 보입니다.



    제 생각에는 컴파일러가 좋아서 그런것 같습니다.



    C언어에서도보면 코딩상에는 문제가 없지만,

    종종 도달할 수 없는 코딩라인이라고해서 에러메시지가 나옵니다.



    제가 생각할때는 intcount에서 if intcount < 4...

    에서 또 if intcout = 1... if intcoutn = 2.... 이렇게

    되어 있는데요,

    case문으로 바꾸어 보시면 어떨까요?



    분명히 intcount는 integer타입이겠죠?

    그리고, int(intCount)나 intCount := intCount + 1 ;이런거

    만나기전에 반드시 초기화가 되어있어야 하고요.



    흠~~, 위의 소스는 한대목이라 제가 돌려볼수 없군요.



    위의 소스의 전체 대목을 제가 본다면 디버깅해서 어디가 문제인지

    찾아볼 수 있을텐데... 물론 vcl들은 제가 폼위에 올려놓으면 되니까요..



    도움이 안되었어도 용서를...