Главная страница
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.027 c
14-1130429605
FeeR
2005-10-27 20:13
2005.12.04
Загрузочный сектор


6-1125063265
Русланка
2005-08-26 17:34
2005.12.04
А как загрузить в Memo содержимое текстового файла в интернете


3-1129894123
lra
2005-10-21 15:28
2005.12.04
как реализовать выбор каждой записи из таблицы.


2-1131952997
Wolferio
2005-11-14 10:23
2005.12.04
ShellListView i OleContainer


14-1132129270
Антоний
2005-11-16 11:21
2005.12.04
Про обновление Win2000ProRus