Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

Свойства как элементы массива-записи   Найти похожие ветки 

 
abu   (2005-11-14 15:45) [0]

Здравствуйте!
Объясню ситуацию.

Есть, к примеру, такие типы: некоторая запись

TMyRec = record
 a, b: Double;
end;


и массив

TMyRecArray = array of TMyRec;

Кроме того, есть класс

TMyClass = class
private
 FMyRecArray: TMyRecArray;
 function GetMyProp(ANumber: Integer): TMyRec;
 procedure SetMyProp(ANumber: Integer; AValue: TMyRec);
public
 property MyProp[ANumber: Integer]: TMyRec read GetMyProp write SetMyProp;
end;

...
// описания упрощенные, безо всяких проверок

function TMyClass.GetMyProp(ANumber: INteger): TMyRec;
begin
 Result := FMyRecArray[ANumber];
end;

procedure TMyClass.SetMyProp(ANumber: Integer; AValue: TMyRec);
begin
 FMyRecArray[ANumber] := AValue;
end;

...

// попытка обращения (предполагается, что MyClass: TMyClass где-то описан и создан)

procedure TForm1.SomeProc;
var
 x: Double;
begin
 x := MyClass.MyProp[0].a; // без ошибки
 MyClass.MyProp[1].a := x; // возникает ошибка
end;


Вопрос: как переделать пример, чтобы было возможно обращение к элементам MyProp[i] по отдельности?


 
Digitman ©   (2005-11-14 16:04) [1]

PMyRec = ^TMyRec;
TMyRec = record
a, b: Double;
end;

TMyRecArray = array of TMyRec;

..

 private
   FMyRecArray: TMyRecArray;
   function GetMyProp(ANumber: Integer): PMyRec;
   procedure SetMyProp(ANumber: Integer; AValue: PMyRec);
 public
   property MyProp[ANumber: Integer]: PMyRec read GetMyProp write SetMyProp;

..

function TMyClass.GetMyProp(ANumber: INteger): PMyRec;
begin
Result := @FMyRecArray[ANumber];
end;

procedure TMyClass.SetMyProp(ANumber: Integer; AValue: PMyRec);
begin
FMyRecArray[ANumber] := AValue^;
end;

procedure TForm1.SomeProc;
var
x: Double;
begin
x := MyClass.MyProp[0].a;
MyClass.MyProp[1].a := x;
end;


 
Anatoly Podgoretsky ©   (2005-11-14 16:06) [2]

В приведенном коде ошибки нет, ошибка в другом месте. При том секретная.


 
BOA_KAA ©   (2005-11-14 16:08) [3]


> Digitman ©   (14.11.05 16:04) [1]

Все понял, спасибо!



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

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.045 c
14-1131964916
Piter
2005-11-14 13:41
2005.12.04
Прикольная фотка :


14-1131908927
Виталий11111
2005-11-13 22:08
2005.12.04
Модератор пидар!!!


2-1132294114
Baraban
2005-11-18 09:08
2005.12.04
MyDac


4-1128415767
AngelFire
2005-10-04 12:49
2005.12.04
Перехват ввода


5-1114415285
Бывший студент
2005-04-25 11:48
2005.12.04
Default свойства