Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Left side cannot be assigned to 
:(
    Опции темы
Medved
Дата 5.5.2004, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Вообщем так:

Объявляю структуру настроек программы:
Код
 
TSettingRecord = packed record  //структура настроек
   colCursor : integer;          //цвет курсора
   colCursorText : integer;      //цвет текста курсора
 end;


Далее объявляю сам класс настроек:
Код

 TSetting = class //Класс настроек
 private
   FRegistry: TRegistry;
   FSetting: TSettingRecord;
 public
   property Setting: TSettingRecord  read FSetting write FSetting; //обратите сюда винмание

   constructor Create;
   destructor Destroy; override;

   procedure DefSetting();
   function LoadSetting(): word;
   function SaveSetting(ASetting: TSettingRecord): word;
   function ApplySetting(ASetting: TSettingRecord): word;
 end;


Внимание вопрос! Когда я в другом модуле пытаюсь присвоить значение любому полю, то выскакивает ошибка "Left side cannot be assigned to", например:
Код

var
 MySetting: TSetting;
begin
 MySetting := TSetting.Create;

 MySetting.Setting.colCursor  := clBlack; // Так не прокатывает
 
 with MySetting.Setting do colCursor  := clBlack; //А вот так все нормально


Что же я упустил из виду, может кто то мне подскажет?

Заранее благодарен.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Vit
Дата 5.5.2004, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



По моему присвоение полей возможно только целиком... Связано по-моему с тем что даже при таком определении реально компиллятор идёт по пути вызывания GetSetting/SetSetting, которые требуют переменной целиком... Можно выкрутиться использованием дополнительного класса вместо записи.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Medved
Дата 6.5.2004, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Спасибо Вит.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
p0s0l
Дата 6.5.2004, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Pegas, что-то я понять не могу, зачем так делать... У тебя ведь есть доступ на чтение и на запись к свойству - вынеси тогда эту запись простыми данными, без property:
Код
TSetting = class //Класс настроек
private
  FRegistry: TRegistry;
public
  Setting: TSettingRecord;

  constructor Create;
  destructor Destroy; override;

  procedure DefSetting();
  function LoadSetting(): word;
  function SaveSetting(ASetting: TSettingRecord): word;
  function ApplySetting(ASetting: TSettingRecord): word;
end;



--------------------
С уважением, г-н Посол.
PM   Вверх
Medved
Дата 6.5.2004, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Спасибо Посол, я знаю о такой возможности.
Саму проблему я решил сразу, преобразорвав запись в класс (что более универсально, особенно, если используешь типы, которые необходимо создавать и уничтожать в ручную), просто было непонятно, почему компилятор выдавал такую ошибку, но Вит уже мне это объяснил.
По повод вопроса насчет "почему property" - это просто назывется дальновидность. Мало ли как в будущем придется модифицировать данный класс.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0815 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.