Delphi 2009입니다.
Form의 FormShow 이벤트에서 TInvoice라는 객체를 생성하고 초기화 하려는데..
TInvoice 객체 생성하려고만 하면 Access Violation이 나는데요..
참고로 XML WebService를 붙이기 위해 THTTPRIO, TXMLDocument 를 쓰고 있습니다.
이 두 객체를 TInvoice 객체에 포인터로 넘겨주어 실제 로직은 TInvoice에 모두 몰아 넣으려고 합니다.
Form 객체의 Show Event에서 TInvoice의 Create를 하는데 바로 에러가 나네요..
Access violation at address 00404388 in module InvoiceProject.exe. Read of address 00000000
메세지로 봐서는 Invoice라는 객체가 생성되지 않은 것으로 보입니다.
어떻게 해결해야 할 지?
/////////////////////////////////////////////////////////////////////////////////
// UnitInvoice.pas 파일의 내용
unit UnitInvoice;
interface
uses
.....
GFService, Invoice, UnitPrintInvoice;
type
TFormMain = class(TForm)
....
HTTPRIO1: THTTPRIO;
XMLDocument1: TXMLDocument;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
....
private
Invoice : TInvoice; // 송장 처리용 Classs
InvoicePrint : TFormPrint; // 송장출력용 화면(POST로 요청)
public
{ Public declarations }
end;
var
FormMain: TFormMain;
implementation
{$R *.dfm}
procedure TFormMain.FormShow(Sender: TObject);
begin
Invoice.Create(); // Access violation 발생.
//Invoice.Init(HTTPRIO1, XMLDocument1);
// Config.ini 파일을 내용을 보여준다.
//edMkimid.Text := Invoice.GetMkImid();
//edCustomerCode.Text := Invoice.GetCustomerCode();
//edOrderNo.Text := IntToStr(Invoice.GetOrderID());
end;
/////////////////////////////////////////////////////////////////////////////////
// Invoice.pas 파일의 내용
unit Invoice;
interface
uses GFService, SHDocVw, SOAPHTTPClient, XMLDoc, msxmldom, XMLIntf, Dialogs, SysUtils, Windows,
Messages, Classes, Controls, Forms, StdCtrls, ComCtrls;
type
// 부속 Structure 정의
// STMallInfo = record
// ....
// end;
////////////////////////////////////////////////////////////////////////////////
// Invoice Class
////////////////////////////////////////////////////////////////////////////////
TInvoice = class
private
bInit : boolean; // Init Flag
MkImid : string; // '21388'
CustomerCode : string; // '00001'~'99999'
OrderID : integer; // 000001~999999
HTTPRIO : THTTPRIO;
XMLDocument : TXMLDocument;
protected
public
function Init(var HTTPRIO : THTTPRIO; var XMLDocument : TXMLDocument) : boolean;
.....
end;
implementation
|