type TMyDate = Class(TObject)
  private
    Year,Month,Day :Integer;
  public
    constructor Create(Y, M, D:Integer); overload;
    constructor Create(); overload;
    destructor Destroy; override;
    procedure SetDate(Y, M, D:Integer);
    function ShowDate:string;
end;var
  Form1: TForm1;implementation{$R *.dfm}{ TMyDate }constructor TMyDate.Create(Y, M, D: Integer);
begin
end;constructor TMyDate.Create;
beginend;destructor TMyDate.Destroy;
begin
  Year := 0;
  Month := 0;
  Day := 0;
  inherited;
end;procedure TMyDate.SetDate(Y, M, D: Integer);
begin
  Year := Y;
  Month := M;
  Day := D;
end;function TMyDate.ShowDate: string;
begin
  Result := IntToStr(Year) + '年' + IntToStr(Month) + '月' + IntToStr(Day) + '日';
end;procedure TForm1.Button1Click(Sender: TObject);
var
  MyDate :TMyDate;
begin
  MyDate.Create;
  MyDate.SetDate(2007,9,5);
  Label1.Caption := MyDate.ShowDate;
  MyDate.Free;
end;end.这段代码有错误吗?为何执行到MyDate.Free;的时候会报读地址错误呢

解决方案 »

  1.   

    是不是需要加个Update包呢 呵呵 感觉很奇怪 如果不加MyDate.Free;关闭窗体的时候会有读址错误 
      

  2.   

    var
      MyDate :TMyDate;
    begin
      MyDate := TMyDate.Create; /// 我晕
      MyDate.SetDate(2007,9,5);
      Label1.Caption := MyDate.ShowDate;
      MyDate.Free;
      

  3.   

    type TMyDate = Class(TObject)
      private
        Year,Month,Day :Integer;
      public
        constructor Create(Y, M, D:Integer); overload;
        constructor Create(); overload;
        destructor Destroy; override;
        procedure SetDate(Y, M, D:Integer);
        function ShowDate:string;
    end; ===========================================
    各位:两个constructor?能这样写吗?不对别笑我,我刚刚面向对象....
      

  4.   

    哦,看到了,后面有 overload 关键字...