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

Вниз

свойство в виде массива   Найти похожие ветки 

 
kiberg   (2008-02-26 11:19) [0]

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

 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;


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

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

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


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

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


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

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


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

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


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

PRowInDict = ^TRowInDict

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


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

Спасибо!



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
2-1203672334
Ковалев Г.Н
2008-02-22 12:25
2008.03.23
Borland Delphi 2006


2-1204014682
emik
2008-02-26 11:31
2008.03.23
Регистрационій код


3-1193337794
DiX
2007-10-25 22:43
2008.03.23
Изменения отображения в DBGrid


2-1203632100
максим
2008-02-22 01:15
2008.03.23
хук в dll


15-1201868952
Sergey Masloff
2008-02-01 15:29
2008.03.23
OracleXe - скормить dump от 9-ки