Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как обратится к элементу динамического массива?


CrowD ©   (2002-10-22 15:30:00) 

Привет, All!

есть код
~~~~
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,IniFiles;

type Class1 = class
public
x : integer;
end;

type Class2 = class
public
c1_ : array of Class1;
end;

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
c2 : Class2;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}



procedure TForm1.Button1Click(Sender: TObject);
begin
c2 := Class2.Create;
SetLength(c2.c1_,3);
c2.c1_[1].x:= 3;
end;

end.
~~~~~
при обращении исполнении строки
c2.c1_[1].x:= 3;
врывает и выдаёт дамп памяти, типа не может обратится, объясните как коректно занести туда значение?


han_malign   (2002-10-23 10:50:00) [1]

нет бы объяснить человеку что в Delphi class и record, в отличие от C++, не одно и тоже, и статического объявления объектов тоже нет.
(на всякий случай - в C++ - struct это класс, но по умолчанию public)


Skier   (2002-10-23 10:41:00) [2]

>MBo
Это ты про :

- использвание try-блока ?
- использование переменной AClass ?
- освобождение объекта ?


MBo   (2002-10-22 17:18:00) [3]

Стоит ли?
>finally
> AClass1.Free;


Skier   (2002-10-22 16:46:00) [4]

>CrowD
Но,IMHO, лучше через - TList или TObjectList


Skier   (2002-10-22 16:43:00) [5]

>CrowD

var
AClass1 : Class1;
begin
SetLength(c2.c1_,3);
AClass1 := Class1.Create;
try
c1_[1] := AClass1;
c2.c1_[1].x:= 3;
finally
AClass1.Free;
end; //try
end;


CrowD   (2002-10-22 16:39:00) [6]

MBo>

так в том то и дело что Class1 это динамический массив, как его если не с помощью SetLength создавать, объясните пожалуста


Андрей Прокофьев   (2002-10-22 15:50:00) [7]

2 Vint © (22.10.02 15:46)
Сильно! :))


Skier   (2002-10-22 15:47:00) [8]

>Vint
Attention required !

???!!!


Vint   (2002-10-22 15:46:00) [9]

если c2.c1_[1].x:= 3;
то вроде предел должен устанавливаться SetLength(c2.c1_, 4);



MBo   (2002-10-22 15:34:00) [10]

А кто будет экземпляры class1 создавать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо