|
Создание массива объектов в Delphi
|
|
|
|
1777 |
Вторник, 06 Апреля 2004, 18:20
|
Участник
Профиль
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
Конфигурация
Корпус: 300 W Материнская плата: EliteGroup Sis648 Оперативная память: PC2700 Samsung, 2-3-3-6-1, 512 MB Видеокарта: Saphire Radeon9100 64 MB Жесткий диск (винчестер): IBM 60 Gb U100, Seagate 20 GB U100 Дисковод: 3.5" CD/DVD: CD-RW 48/24/52x ASUS Модем: Внутренний Omni 56k Сетевой адаптер: Встроенная Звуковая плата: Встроенная AC97 Монитор: 15 LCD Philips 150S3 Операционная система: Win XP, Win98 Прочее: --
|
Создание динамического/статического массива объектов-наследников от TObject. Есть два юнита. Главный: Код | unit MainUnit;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ObjectUnit, StdCtrls;
type TMainForm = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end;
var MainForm: TMainForm;
A: array of TMyObject;
implementation
{$R *.dfm}
procedureTMainForm.Button1Click(Sender: TObject); begin ............. end;
procedureTMainForm.FormCreate(Sender: TObject); var i: integer; begin SetLength(A,3); for i:=0 to 2 do begin A[i].Create; A[i].IntegerField:=i; end; end;
procedureTMainForm.FormDestroy(Sender: TObject); var i: integer; begin for i:=0 to 2 do begin A[i].Destroy; end; A:=nil; end;
end.
|
и юнит самого объекта-наследника
Код | unitObjectUnit;
interface
uses Windows, Messages, SysUtils, Classes, Dialogs;
type TMyObject = class(TObject) private FIntegerField: integer; public constructor Create; property IntegerField: integer read FIntegerField write FIntegerField; end;
implementation
constructor TMyObject.Create; begin inherited Create; FIntegerField:=1; end;
end.
|
Суть: создавать/уничтожать динамический массив объектов, с обращением к ним по индексу в процессе работы программы. При данной реализации в строке
с переходом в
Код | [B]inherited[/B] Create; |
где выводит ошибку AccessViolation. Как здесь надо делать?
Сообщение отредактировал 1777 - Вторник, 06 Апреля 2004, 18:24
--------------------
От 1777-ого
Ну что ты вылупился, как винда на новое устройство?
|
|
|
|
|
1777 |
Вторник, 06 Апреля 2004, 21:06
|
Участник
Профиль
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
Конфигурация
Корпус: 300 W Материнская плата: EliteGroup Sis648 Оперативная память: PC2700 Samsung, 2-3-3-6-1, 512 MB Видеокарта: Saphire Radeon9100 64 MB Жесткий диск (винчестер): IBM 60 Gb U100, Seagate 20 GB U100 Дисковод: 3.5" CD/DVD: CD-RW 48/24/52x ASUS Модем: Внутренний Omni 56k Сетевой адаптер: Встроенная Звуковая плата: Встроенная AC97 Монитор: 15 LCD Philips 150S3 Операционная система: Win XP, Win98 Прочее: --
|
Все дошло походу: надо писать A[i]:=TMyObject.Create; совсем про это забыл заглючился
Сообщение отредактировал 1777 - Вторник, 06 Апреля 2004, 21:08
--------------------
От 1777-ого
Ну что ты вылупился, как винда на новое устройство?
|
|
|
|
|
|
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
|
0 Пользователей:
|
|
© Copyright by WinCity.Ru 2001 - 2008 | Обратная связьУслуги веб-хостинга предоставлены компанией MTW.RU
|
|