Форум: "Начинающим";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизСвойства как элементы массива-записи Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c