Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Заморочки с классами


Автор: Kationchic 9.4.2008, 08:22
Сильно не пинайте только...
Проблема такая - есть класс
Код

type TImageClass = class(TObject)
  private
    i_h, i_w: integer;
  public
    constructor Create(var img: TImage);
    .......
end;


потом в коде когда я обращаюсь к полям:
Код

constructor TImageClass.Create(var img: TImage);
begin
  i_h:=img.Height;
  i_w:=img.Width;
......
end;


Все компилируется, но при запуске вылетает.
Подскажите, что не так.

Автор: Rennigth 9.4.2008, 10:08
Kationchic, ну а img то существует?
Покажи как используешь. Плюс экземпляры классов и так всегда по ссылке передаются, т.е. var в конструкторе не нужен.

Автор: pseud 9.4.2008, 11:22
все работает без проблем

пример:
Код


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type TImageClass = class(TObject)
  private
    i_h, i_w: integer;
  public
    constructor Create(var img: TImage);
end;

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TImageClass }

constructor TImageClass.Create(var img: TImage);
begin
  i_h:=img.Height;
  i_w:=img.Width;
end;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var
  ic: TImageClass;
begin
  ic := TImageClass.Create(Image1);
  try
  finally
    ic.Free;
  end;
end;


end.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)