Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
14-1131519250
Antonn
2005-11-09 09:54
2005.12.04
Антивирь считает мой проект вирусом:)


2-1132322989
tq
2005-11-18 17:09
2005.12.04
Screensaver


14-1132035156
Ega23
2005-11-15 09:12
2005.12.04
С днем рождения! 15 ноября


14-1131896914
Kerk
2005-11-13 18:48
2005.12.04
Юра Зотов, спасибо! :)


2-1132332848
Boble
2005-11-18 19:54
2005.12.04
FILTER по LOOKUP полям





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский