Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2011, 17:06   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Есть обьект:
Код:
 Type
    TmyObject=Class(TObject)
     public
     myData:TmyRecord;
Где TmyRecord это типизированная структура:
Код:
type
  TmyRecord = record
  {
 over 9000 параметров разных типов
  }
  end;
хранящая данные этого обьекта.

Так же есть контейнер этих обьектов:
Код:
type
  TmyObjectsList=Class(TobjectList)
   private
     function GetObject(Indx:integer):TmyObject;
   public
     property Objects[indx:integer]:TmyObject read GetObject;
    end;


function TmyObjectsList.GetObject(Indx:integer):TmyObject;
begin
Result:=(Items[Indx] as TmyObject);
end;
Контейнер этих обьектов имеет свойтво Objects которое возвращает нужный элемент. И таким образом можно получить доступ к TmyObject и изменять его параметры в любых направлениях, например:
Код:
var
  in:<type of var>; //переменная любого типа
  out:<type of var>;
  i:integer;
begin
 For i:=0 to myObjectsList.Count -1 do
 begin
//передача данных в переменную из TMyRecord 
out:=myObjectsList.Objects[i].myData.<type of var>;

//передача данных из переменной в TMyRecord 
myObjectsList.Objects[i].myData.<type of var>:=in;
 end;
end;
так вот я хочу не писать каждый раз вот такой код:
myObjectsList.Objects[i].myData.<type of var>:=in;

а через свойство делать чтение/запись в tMyRecord;

Чтение благо получилось:
Код:
type
  TmyObjectsList=Class(TobjectList)
   private
     function GetObject(Indx:integer):TmyObject;
     function GetObjectData(Indx:integer):TmyRecord;
   public
     property Objects[indx:integer]:TmyObject read GetObject;
     Property ObjectsData[Indx:integer]:TmyRecord Read GetObjectsData;
    end;


function TmyObjectsList.GetObject(Indx:integer):TmyObject;
begin
Result:=(Items[Indx] as TmyObject);
end;

function TmyObjectsList.GetObjectData(Indx:integer):TmyRecord;
begin
Result:=Objects[Indx].myData;
end;
Как реализовать запись?
Человек_Борща вне форума Ответить с цитированием
Старый 25.09.2011, 18:21   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Есть у кого-нибудь какие-нибудь соображения о том, как решить проблему?
Человек_Борща вне форума Ответить с цитированием
Старый 25.09.2011, 18:22   #13
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Код:
 property Objects[indx:integer]:TmyObject read SetObject;

procedure TmyObjectsList.SetObject(Indx:integer; const Value:TmyObject);
begin
  if Indx<lenGth(Items) then
  Move(Value, Items[Indx], SizeOf(TmyObject));
end;
Если нужно записывать всю запись и отдельные поля одновременно в разных частях кода, советую не морочится из свойствами. Обьяви массив в секции public и производи запись/чтение напрямую
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 25.09.2011, 19:11   #14
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Нет и ещё раз нет.. не так вы меня понимаете..
вот то, что мне нужно было:
http://clubs.ya.ru/46116860184273880...l?item_no=1154

злоебучие указатели....
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Left side cannot be assigned to... _-Re@l-_ Общие вопросы Delphi 2 24.03.2011 15:07
IE8. не работает padding-left, margine-left dimonnnn HTML и CSS 7 13.08.2010 19:33
assigned(some) sunnmas Общие вопросы Delphi 3 05.08.2009 15:26
Ошибка Left Side cannot be assigned to.. DM_bite Помощь студентам 1 18.09.2008 21:01