自定义类代码如下:
type
  TModem = class(TObject)
  private
    fMscomm: TMSComm;
  public                                 
    constructor Create(aMSComm: TMSComm);
    destructor Destroy;override;  
end;constructor TModem.Create(aMSComm: TMSComm);
begin
  fMscomm := aMSComm;
  inherited Create;
end;
.......调用模块代码如下:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, M22Modem, StdCtrls, OleCtrls, MSCommLib_TLB;type
  TForm1 = class(TForm)
    Button1: TButton;
    MSComm1: TMSComm;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private    { Private declarations }
  faModem: TModem;
  public
     
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
  faModem.Create(MSComm1);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  faModem.Destroy;
end;end.在执行到fMscomm := aMSComm; 时出错提示信息:'Access violation at address 00458984 in module 'project.exe'.write of address 0000000C'

解决方案 »

  1.   

    inherited Create;
    fMscomm := aMSComm;
      

  2.   

    TMSComm是一个类,还是一个数据结构procedure TForm1.Button1Click(Sender: TObject);
    begin
      faModem:=TModem.Create(MSComm1);//这里的MSComm1初始化了吗。
    end;
    constructor TModem.Create(aMSComm: TMSComm);
    begin
      fMscomm := aMSComm;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      faModem.Free;
    end;
      

  3.   

    TMSCOMM就是微软的串口控件啊  我在做一个包括Tprogress类的时候采用过这种方法,没有错误。  是不是faModem定义的位置有问题呢?
      

  4.   

    我发现改为:
    faModem := TModem.Create(Mscomm1);
    就好了  为什么会这样呢?
      

  5.   

    faModem还没有初使化,你调用它的构造函数当然出错了,因为在内存中还没有分配此对象的内存啊!
      

  6.   

    因为你没有对 MSComm1 分配空间。修改为:procedure TForm1.Button1Click(Sender: TObject);
    begin
      MSComm1:=TMSComm.Create;
      faModem.Create(MSComm1);
    end;
      

  7.   

    呵呵,你再看看我上面的回答,我已经指出了问题所在了,不是吗:你再看看。就是Delphi创建对象的做法,记住就行了。