ActiveXForm에서 ADO를 사용하여 Stream형태로 저장한 데이타를 읽고는 오류가 발생합니다.
AccessViolation 오류가 나타납니다.
ADOQuery 컴포넌트의 CreateBlobStream 메소드를 사용하는데 한번도 읽지 않고 그냥 생성후 닫으면 오류가 나지 않지만...
단 한번이라도 Read를 하고 나면 항상 오류가 발생합니다.
Trace를 하다보면 AxCtrls.pas의 ParkingWindowProc 프로시져의 최하 마지막부분에서 항상 발생을 하는군요...
제가 작성한 프로시져의 맨 마지막부분에 어떤 코드를 넣든 상관없이 항상 그 맨 마지막 코드에서 오류가 발생합니다.
Stream을 한번이라도 Read하면 발생하구요...
Delphi 5로 작업하고 있습니다.
오류의 원인을 혹시 알고 계신분은 안계십니까?
알고 계신분은 좀 힌트라도 부탁드리겠습니다.
감사합니다.
항상 즐거운 하루가 되세요...
아래는 약간의 소스를 첨부했습니다.
procedure TafxDiagram.btnLoadClick(Sender: TObject);
var
S, aVersion: String;
aComp: TComponent;
aRecord: PMemInfo;
I: Integer;
begin
if not qryFlow.Active then
Exit;
if qryFlow.RecordCount < 1 then
Exit;
if not fncNewDiagram then
Exit;
RegisterClasses([TMemNode, TSignNote, TSignText, TDiagramInfo,
TSignFlow, TSignNoteLink ]);
try
OpenStream := qryFlow.CreateBlobStream(
qryFlow.FieldByName('dinfo'), bmRead);
OpenStream.Read(aVersion, HeadSize);
while OpenStream.Position < OpenStream.Size do
begin
aComp := OpenStream.ReadComponent(nil);
////////////////////////////////////////////////////
// 기타 작업 수행
///////////////////////////////////////////////////
end;
OpenStream.Free;
OpenStream := nil;
except
on E: Exception do
begin
S := '저장된 Diagram정보를 읽어들이는 중 다음과 같은 오류가 ' +
'발생하였습니다.' + #13#10#13#10 + E.Message;
MessageBox(Self.Handle, PChar(S), '메시지', MB_ICONINFORMATION);
Exit;
end;
end;
// AA.Tag := 0; <= 어떤 코드이던 항상 오류가 나는 부분