Q&A

  • API 함수하나 쓰고나면 변수, 콤포넌트들이 엉망이 됩니다.
귀신에 홀린것 같아서요... 상황은 이렇습니다.



for i := 0 to lstTagName.Items.Count - 1 do

begin

lstTagName.ItemIndex := i;

piTag1 := TPI_Tag.Create(lstTagName.Items[i]);

dtPiDate := dtDate;



if piTag1.TagNameValid then

begin

if piTag1.TimedValue(dtPiDate, 2, rval, istat) = 0 then

begin

//

// dtPiDate,rval... 대입문...

//

end

else

frmMain.g_LeaveLog(FALSE, 'PI',

Format('PI 자료(%s) 처리 실패 (조회)',

[lstTagName.Items[i]]));

end;

end

중간에 대입문에는 SQL Insert문이 있었습니다. 업무가 바뀌어서 저부분에서 일반변수로 대입하는걸로 바꾸고 컴파일했더니만...

piTag1.TimedValue(dtPiDate, 2, rval, istat)

이걸 한번수행하고 나니 리스트박스는 AccessViolation, i는 6xxxxx를 나타내고 있더만요. 그러고는 커널32 페이지 오류로 종료합니당~~~ 물론 i와 리스트박스의 item은 TimedValue(....)와 아무 관련이 없습니다...

오늘 하루종일 귀신과 싸우고 있습니다... 참고로 각 메소드 정의는 이렇습니다.

TPI_Tag.Create(const sTagName : string)

TPI_Tag.TimedValue(var dtPiDate : TDateTime; wOption : word;

var rval : single; var istat : integer) : integer;

도와주세요~~~

0  COMMENTS