![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обратится к элементу динамического массива?
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 создавать?