Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];

Вниз

property   Найти похожие ветки 

 
9899100   (2008-11-26 10:39) [0]

Описал класс
TStore=class
 Private
   fHeader:THeader;
 ...
 Public
   property Header:THeader read fHeader write fHeader;
  ...
 end;

здесь THeader=record
          name:String;
          count:Integer;
       end;

Когда пытаюсь присвоить значение

q1.Header.Count:=100;

компилятор выдает ошибку что
Left side cannot be assigned to

в принципе понятно почему такая ошибка возникает

вопрос  в том, как можно сделать чтобы можно было присваивать значения полям свойства fHeader но не напрямую т.е. не перенося fHeader
в секцию Public
????


 
Palladin ©   (2008-11-26 10:43) [1]

PHeader=^THeader;
THeader=record
         name:String;
         count:Integer;
      end;

TStore=class
Private
  fHeader:THeader;

function gHeader:PHeader;
...
Public
  property Header:PHeader read gHeader;
 ...
end;

function gHeader:PHeader;
result:=@fHeader


 
Сергей М. ©   (2008-11-26 10:43) [2]


> свойства fHeader


Нет у тебя такого свойства.
Есть св-во Header.


 
9899100   (2008-11-26 10:52) [3]

>>Paladin
интересный вариант
тогда получиться
обращение типа

q1.Header^.Count:=100;

а так чтобы нормально работало при
q1.Header.Count:=100;
учитывая что fHeader в секции private
не получиться???


 
Ega23 ©   (2008-11-26 10:53) [4]


> а так чтобы нормально работало при
> q1.Header.Count:=100;
> учитывая что fHeader в секции private
> не получиться???


А ты попробуй.


 
MBo ©   (2008-11-26 10:54) [5]

или присваивать свойство-запись целиком, или делать доступ к полям записи через отдельные свойства


 
Palladin ©   (2008-11-26 10:55) [6]


> 9899100   (26.11.08 10:52) [3]

да... интересный вариант твоих комментариев :) сразу видно, дело знаешь :)


 
9899100   (2008-11-26 10:59) [7]

>>Paladin
не прикалывайся
ведь вариантов реализации может быть довольно много
ты предложил довольно интересный


 
Сергей М. ©   (2008-11-26 11:03) [8]


> 9899100


В какой секции объявлено свойство - по барабану . Секция влияет лишь на область видимости ид-ра.

А вот что объявлено - свойство или поле - это совсем другой вопрос.
Свойство, в отлисии от поля, позволяет использовать методы-геттеры/сеттеры, в которых ты волен реализовать требуемую логику записи/чтения.


 
Palladin ©   (2008-11-26 11:08) [9]


> 9899100   (26.11.08 10:59) [7]

да это ты прикалываешься, несешь вскую шутки... )


> ведь вариантов реализации может быть довольно много

реализации чего? хочешь менять поля не отходя от кассы используй указатели (не сможешь поймать момен изменения, грубо говоря сеттер не напишешь для этого дела), или превращай запись в класс, если нужно реагировать на изменения полей, кстати, по последним данным, в последних версиях делфи свойства можно делать и в записях


 
9899100   (2008-11-26 11:17) [10]

>>Сергей

> В какой секции объявлено свойство - по барабану . Секция
> влияет лишь на область видимости ид-ра.
>
> А вот что объявлено - свойство или поле - это совсем другой
> вопрос.
> Свойство, в отлисии от поля, позволяет использовать методы-
> геттеры/сеттеры, в которых ты волен реализовать требуемую
> логику записи/чтения.


от и яж про тоже


 
9899100   (2008-11-26 11:21) [11]

>>Palladin
спасибо
действительно работает без разадресации указателя
q1.Header.Count:=100;

блин я всегда их разадресовывал указатели
т.е. если указанно что i:^Integer
то обязательно
i^:=10;
но ни как не i:=10
ибо i это указатель
......


 
Сергей М. ©   (2008-11-26 11:37) [12]


> от и яж про тоже


Ну так а что же тогда медлишь ?)

Объявляй

property Header:THeader read FHeader write SetHeader;

и вуаля !

В сеттере делай все что надо с полем fHeader


 
Anatoly Podgoretsky ©   (2008-11-26 12:32) [13]


> 9899100   (26.11.08 10:52) [3]

Получится, если создашь свойство Count


 
Sapersky   (2008-11-26 13:04) [14]

With q1.Header do Count:=100;

или

property HeaderCount : Integer read fHeader.Count write fHeader.Count;

блин я всегда их разадресовывал указатели

Если это указатель на запись или массив, то при обращении к полям (или элементам массива) разадресация делается автоматически.



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

Форум: "Начинающим";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
9-1176630446
Piroxyline
2007-04-15 13:47
2009.01.11
Пример из туториала по Direct3D


2-1227719125
programmer90
2008-11-26 20:05
2009.01.11
Функции распознавание цвета и координат пикселя


15-1226612216
Petr V. Abramov
2008-11-14 00:36
2009.01.11
Анатомия кризиса


15-1226778810
main
2008-11-15 22:53
2009.01.11
Что это может быть? Мышка как-бы временно прилипает?


15-1226802329
axd
2008-11-16 05:25
2009.01.11
Помогите найти песню mp3





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский