제가 만든 컴포넌트 안에
procedure TlkwMelsec.SixteenBit_Analysis(DecimalData : smallint; var SixteenBitData : array of smallint);
var ii : integer;
begin
if DecimalData < 0 then SixteenBitData[15] := 1
else SixteenBitData[15] := 0;
DecimalData := DecimalData and $7FFF;
for ii := 0 to 14 do
begin
SixteenBitData[ii] := DecimalData mod 2; // <-- 이지점
DecimalData := DecimalData div 2;
if (DecimalData = 1) then
begin
SixteenBitData[ii+1] := 1;
break;
end;
end;
end;
이런 Procedure 가 있습니다. 그런데 하두 이상한 동작을 하길레 중단점을 찍어놓고 살펴보았더니 for문을 처음 들어가는데 이상하게 ii 변수가 15가 되는 것입니다. 어디 다른곳이 혹시 ii를 사용한것도 아니고 다른 변수로 바꾸어 보아도 계속 15가 나오데요.....참내...모가 잘못된 것인지요...
참고로 ii를 전역변수로 선언을 하면 0 이 됩니다. 무엇이 잘못된 것인지 봐주세요.