귀신에 홀린것 같아서요... 상황은 이렇습니다.
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;
도와주세요~~~