Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Вниз

Помогите с ООП   Найти похожие ветки 

 
Olivka   (2003-09-25 13:04) [0]

Посмотрите, плиз, сей код - я пытаюсь разобраться с наследованием. Почему ошибка выдается? ;(
Только не ругайте сильно!

program Project2;
uses
Forms,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas" {Form2},
Unit3 in "Unit3.pas" {Form3};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm3, Form3);
Application.Run;
end.
---------------------------------------------
unit Unit3;
interface
uses...
type
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
form2.create(application,1);
end;
end.
-----------------------------------------------
unit Unit1;
interface
uses...
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
constructor TForm1.Create(AOwner: TComponent);
begin
-------access violation------->>>>> inherited;
end;
end.
---------------------------------------------------------------
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Unit1, StdCtrls;
type
TForm2 = class(TForm1)
Label1: TLabel;
private
{ Private declarations }
Field : integer;
public
{ Public declarations }
constructor Create(AOwner: TComponent; param: integer); overload;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
constructor TForm2.Create(AOwner: TComponent; param: integer);
begin
inherited Create(AOwner);
Field := param;
ShowMessage("Field = " + IntToStr(Field));
end;
----------------------------------------------------------------


 
Юрий Федоров   (2003-09-25 13:12) [1]

procedure TForm3.Button1Click(Sender: TObject);
begin
form2.create(application,1);
end;


?????


 
Mikhail V   (2003-09-25 13:24) [2]

Form2 := TForm2.Create(Application, 1) ?


 
Murad   (2003-09-25 13:31) [3]

Может стоило в TForm2.Create сделать REINTRODUCE a не OVERLOAD


 
icWasya   (2003-09-25 13:48) [4]

unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Unit1, StdCtrls;
type
TForm2 = class(TForm1)
Label1: TLabel;
private
{ Private declarations }
Field : integer;
public
{ Public declarations }
constructor Create(AOwner: TComponent);override; // добавить
constructor Create(AOwner: TComponent; param: integer); overload;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}

constructor TForm2.Create(AOwner: TComponent; param: integer);
begin
inherited Create(AOwner);
end;

constructor TForm2.Create(AOwner: TComponent; param: integer);
begin
//inherited Create(AOwner); - выкинуть
Create(AOwner);

Field := param;
ShowMessage("Field = " + IntToStr(Field));
end;


 
Murad   (2003-09-25 13:55) [5]

2icWasya
Это все к сути дела не относится!
Ошибка была из-за того что при записи
form2.create(application,1); не происходит создания
объекта, а только вызов метода create, а, ссылка на form2
в этот момент нулевая. Т.е. никто еще память даже под объект
не выделил. Правильное решение дал Mikhail V и Юрий Федоров...


 
Olivka   (2003-09-25 16:04) [6]

Люди, спасибо, разобралась !:)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
1-18422
lovres
2003-09-24 15:15
2003.10.06
Как программно вызвать переход фокуса на следущ. контрол?


6-18520
Barmutik
2003-08-06 22:16
2003.10.06
Передача русских букв в WebService в widestring


14-18557
___Nikolay
2003-09-19 05:59
2003.10.06
* Задача 5 *


14-18570
inspirion
2003-09-18 10:27
2003.10.06
загрузка центрального процессора


14-18589
jack128
2003-09-18 00:28
2003.10.06
Именинники 18 сентября





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский