我程序出的问题是这样的:
在单元文件中我的类是这样定义的:
unit myclass;interface
uses Windows, Messages, SysUtils, Classes, Contnrs;
type
   TMyPem= class(Tobject)
  private
       FPicsize:string;
       FDate: TDateTime;
  public
   
    constructor create;
    function MyGetFillPicMem() :string ;
    
  end;
  
implementationconstructor TMyPem.create;
begin
  FPicsize:='whb';
  FDate:=Date;
end ;function TMyPicInMem.MyGetFillPicMem(): string;
begin
result:=FPicsize;
end ;
end.
但我在别的程序调用这个类时是这样的:
myform;
interface
uses
  Windows, Messages, myclass,SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;  MyPem:TMyPem;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
  
    Button1.Caption:=MyPem.MyGetFillPicMem();end;procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;end.此时程序总是报错。不知是什么原因,请大家多指点!!报错为:
Access violation ar address 00453344 in module "my_ced.exe".  read  of address 00000004.

解决方案 »

  1.   

    没创建对象呀
    在form1create里写MyPem:=TMyPem.create(application);
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        MyPem:=TMypem.create;  //******//
        Button1.Caption:=MyPem.MyGetFillPicMem();
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      MyPem := TMyPem.Create(self);//////////先创建才能用
        Button1.Caption:=MyPem.MyGetFillPicMem();end;
      

  4.   

    procedure TForm1.Create(Sender: TObject);
    begin
      MyPem := TMyPem.Create;
      Button1.Caption:=MyPem.MyGetFillPicMem();
    end;procedure TForm1.Destory(Sender: TObject);
    begin
      MyPem.Free;
    end;
      

  5.   

    不好意思,我错了。Create没有参数,
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      MyPem := TMyPem.Create;
      try
        Button1.Caption:=MyPem.MyGetFillPicMem();
      finally
        MyPem.Free;
      end;
    end;