수고하십니다.
델파이 4.0버전을 사용하고 있으며 3Tier환경에서 사용합니다.
Server(Pro*C -> 업무처리 Logic이 구사되어 있음)
Tuxedo(중계처리)
Client(관련데이터 송수신 처리)
PC : 256M 866MHZ Win-Me
***미리보기 버튼클릭하여 처리하는 부분은 다음과 같습니다.
procedure TMT7878.PreBtnClick(Sender: TObject);
var
MDIChld : TWnChildForm;
ret : Integer;
tmp_ch : String;
begin
Screen.Cursor := crHourGlass;
if (KeyfldChk(ALL_FLD) = FALSE) then begin
Screen.Cursor := crDefault;
exit;
end;
memset(@ai, 0, sizeof(SUBACT302R_INPDATA)); // ai 초기화
memset(@ao, 0, sizeof(SUBACT302R_OUTDATA)); // ao 초기화
case Dmatoi(sJobgb.Text) of
1,2 : strpcopy(ai.sJobGb, sJobgb.Text); // 업무구분
end;
tmp_ch := Copy(sChgb.Text, 1, 2);
strpcopy(ai.sChgb, tmp_ch);
// strpcopy(ai.sYymm, sYymm.Text); // 해당년월
tmpYyyymm := Edit_Yy.Text + Edit_Mm.Text;
strpcopy(ai.sYymm, tmpYyyymm); // 해당년월
// 출력 Rq
ret := DmRqRp( SERVER, 'bacg302r', '0',
sizeof(SUBACT302R_INPDATA), @ai, @ao, M_Code );
Screen.Cursor := crDefault;
if NOT((ret < 0) OR (M_Code[0] = 'E')) then begin
tmp_yyyy := Edit_yy.Text;
tmp_mm := Edit_Mm.Text;
tmp_Chgb := sChgb_Panel.Caption;
Application.CreateForm( TQT7878, QT7878 );
QT7878.QRPT7878.Preview;
MDIChld := TWnChildForm(MainForm.MDIChildren[0]);
MDIChld.CloseBtn.SetFocus;
QT7878.QRPT7878.Free;
end;
MsgDsp(@M_Code);
sJobgb.SetFocus;
end;
이상의 코드를 사용하고 있습니다.
몇번인지는 정확하지 않으나 여러번 다시 들어가서 미리보기를 실행하면
"Access violation at address FABEC7B5 . Read of address FABEC7B5"
에러 메세지가 나옵니다.
어디가 잘못된 것일까요?
답변주시면 감사하겠습니다.
QFrmReport := TQFrmReport.Create(Self);
try
QFrmReport.CleanupInstance; // <-- 요놈을 해주면 별 문제가 없더군요..
QFrmReport.Conf_Report.Preview;
finally
if IsWebComm then timer1.Enabled := True;
QFrmReport.Free;
end;
박성호 wrote:
> 수고하십니다.
> 델파이 4.0버전을 사용하고 있으며 3Tier환경에서 사용합니다.
>
> Server(Pro*C -> 업무처리 Logic이 구사되어 있음)
> Tuxedo(중계처리)
> Client(관련데이터 송수신 처리)
>
> PC : 256M 866MHZ Win-Me
>
> ***미리보기 버튼클릭하여 처리하는 부분은 다음과 같습니다.
>
> procedure TMT7878.PreBtnClick(Sender: TObject);
> var
> MDIChld : TWnChildForm;
> ret : Integer;
> tmp_ch : String;
> begin
> Screen.Cursor := crHourGlass;
> if (KeyfldChk(ALL_FLD) = FALSE) then begin
> Screen.Cursor := crDefault;
> exit;
> end;
>
> memset(@ai, 0, sizeof(SUBACT302R_INPDATA)); // ai 초기화
> memset(@ao, 0, sizeof(SUBACT302R_OUTDATA)); // ao 초기화
>
> case Dmatoi(sJobgb.Text) of
> 1,2 : strpcopy(ai.sJobGb, sJobgb.Text); // 업무구분
> end;
> tmp_ch := Copy(sChgb.Text, 1, 2);
> strpcopy(ai.sChgb, tmp_ch);
> // strpcopy(ai.sYymm, sYymm.Text); // 해당년월
> tmpYyyymm := Edit_Yy.Text + Edit_Mm.Text;
> strpcopy(ai.sYymm, tmpYyyymm); // 해당년월
>
> // 출력 Rq
> ret := DmRqRp( SERVER, 'bacg302r', '0',
> sizeof(SUBACT302R_INPDATA), @ai, @ao, M_Code );
>
> Screen.Cursor := crDefault;
> if NOT((ret < 0) OR (M_Code[0] = 'E')) then begin
> tmp_yyyy := Edit_yy.Text;
> tmp_mm := Edit_Mm.Text;
> tmp_Chgb := sChgb_Panel.Caption;
> Application.CreateForm( TQT7878, QT7878 );
> QT7878.QRPT7878.Preview;
> MDIChld := TWnChildForm(MainForm.MDIChildren[0]);
> MDIChld.CloseBtn.SetFocus;
> QT7878.QRPT7878.Free;
> end;
> MsgDsp(@M_Code);
> sJobgb.SetFocus;
> end;
>
> 이상의 코드를 사용하고 있습니다.
> 몇번인지는 정확하지 않으나 여러번 다시 들어가서 미리보기를 실행하면
>
> "Access violation at address FABEC7B5 . Read of address FABEC7B5"
> 에러 메세지가 나옵니다.
> 어디가 잘못된 것일까요?
>
> 답변주시면 감사하겠습니다.