Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

свойство в виде массива


kiberg ©   (2008-02-26 11:19:00) 

Я хочу в своем объекте разместить массив записей, что-то вроде этого:

 TRowInDict = record
   WordForm: String;
   Prop: TWordProp;
   Basis: String;
   DateTime: TDateTime;
 end;

 TStructDict = class(TObject)
 private
   FItems: array of TRowInDict;
   function GetItems(aIndex: Integer): TRowInDict;
   procedure SetItems(aRow: TRowInDict; aIndex: Integer);
 public
   property Items[aIndex: Integer]: TRowInDict read GetItems write SetItems; default;
 end;

При этом я могу прочитать данные, например, vStr := vStructDict.Items[1].WordForm и записать в массив целую запись.
А как мне менять отдельные поля массива, например, vStructDict.Items[1].WordForm := vStr;


kiberg   (2008-02-26 11:55:00) [1]

Спасибо!


Сергей М.   (2008-02-26 11:52:00) [2]

PRowInDict = ^TRowInDict

function TStructDict.GetItems(aIndex: Integer): PRowInDict;
begin
 Result := @ FItems[aIndex];
end;


kiberg   (2008-02-26 11:47:00) [3]

Что-то я не понял. А как это будет выглядеть в виде кода?


Сергей М.   (2008-02-26 11:38:00) [4]

Доступ к элементу массива не по значению (как сейчас у тебя реализовано), а по ссылке


kiberg   (2008-02-26 11:33:00) [5]

А какая может быть другая реализация?


Сергей М.   (2008-02-26 11:32:00) [6]

При такой реализации это будет выглядеть не иначе как:

var
 Item: TRowInDict;
..
Item := vStructDict.Items[1];
Item.WordForm := vStr;
vStructDict.Items[1] := Item;


Наверх

Титульная страница Поиск, карта сайта Написать письмо