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

Вниз

Краткость инициализации записи   Найти похожие ветки 

 
DelphiLexx ©   (2006-08-17 09:00) [0]

Есть запись

type
TScreenCoeff = record
   WCoeff: double;
   HCoeff: double;
end;
var
ScreenCoeff: TScreenCoeff;
begin

 {Можно ли ScreenCoeff.WCoeff := 2; ScreenCoeff.HCoeff := 3 заменить как-нибудь на ScreenCoeff := (2, 3) - ну вообщем, чтобы задать значения полей в одну строчку - помню, что как-то это делается сейчас забыл как.}
end;


 
MBo ©   (2006-08-17 09:06) [1]

Напиши функцию инициализации, подобно функции Point


 
StriderMan ©   (2006-08-17 09:24) [2]

если это глобальная переменная или константа то ее можно проинициализировать так::

var или const
   ScreenCoeff: TScreenCoeff = (WCoeff: 2; HCoeff: 3);


 
DelphiLexx ©   (2006-08-17 09:27) [3]


>
> var или const
>    ScreenCoeff: TScreenCoeff = (WCoeff: 2; HCoeff: 3);

Нет мне нужно это делать внутри
begin
end


 
DelphiLexx ©   (2006-08-17 09:34) [4]


> Напиши функцию инициализации, подобно функции Point

Дело в том, что у меня ScreenCoeff - это свойство т.е.
published ScreenCoeff: TScreenCoeff read fScreenCoeff write
fScreenCoeff

Поэтому напрямую присвоить ScreenCoeff не удается приходится
заводить вспомогательную переменную sc: TScreenCoeff и делать так:
sc.WCoeef := 1;
sc.HCoeef := 3;
ScreenCoeff := sc;
А хотелось бы чтобы без всяких вспомогательных переменных.


 
Separator ©   (2006-08-17 09:41) [5]

type
TScreenCoeff = record
  WCoeff: double;
  HCoeff: double;
end;

function ScreenCoeff(const AWCoeff, AHCoeff: double): TScreenCoeff;
begin
   Result.WCoeff = AWCoeff;
   Result.HCoeff= AHCoeff
end;

var
   WScreenCoeff: TScreenCoeff;

begin
   WScreenCoeff:= ScreenCoeff(10.2, 20.34)
end.


 
MBo ©   (2006-08-17 09:42) [6]

>Дело в том, что у меня ScreenCoeff - это свойство
Вот и хорошо, с функцией будет удобно


 
DelphiLexx ©   (2006-08-17 09:44) [7]


>  WScreenCoeff: TScreenCoeff;

ScreenCoeff у меня свойство а не переменная.


 
StriderMan ©   (2006-08-17 09:48) [8]


> Дело в том, что у меня ScreenCoeff - это свойство т.е.
> published ScreenCoeff: TScreenCoeff read fScreenCoeff write
> fScreenCoeff

ну и какие проблемы?
нельзя разве так?



TMyObject = class(...)
 ...
published
 property ScreenCoeff: TScreenCoeff....

....

with MyObject.ScreenCoeff do
begin
 WCoeff := 2;
 HCoeff := 3;
end;


ну или так

TMyObject = class(...)
 ...
 procedure SetScreenCoeffEx(const AWCoeff, AHCoeff: double);

...
procedure TMyObject.SetScreenCoeffEx(const AWCoeff, AHCoeff: double);
begin
 with fScreenCoeff do
 begin
   WCoeff := AWCoeff;
   HCoeff := AHCoeff;
 end;

end;


 
DelphiLexx ©   (2006-08-17 09:54) [9]

Посмотри код правильно я понял

> TMyObject = class(...)
>  private
>    fScreenCoeff: TScreenCoeff;
>    procedure SetScreenCoeffEx(const AWCoeff, AHCoeff: double);
>  published
>    ScreenCoeff: TScreenCoeff read fScreenCoeff write SetScreenCoeffEx
>  end
> ...
> procedure TMyObject.SetScreenCoeffEx(const AWCoeff, AHCoeff:
>  double);
> begin
>  with fScreenCoeff do
>  begin
>    WCoeff := AWCoeff;
>    HCoeff := AHCoeff;
>  end;
>
> end;


 
StriderMan ©   (2006-08-17 10:01) [10]


> DelphiLexx ©   (17.08.06 09:54) [9]
> Посмотри код правильно я понял
> >    ScreenCoeff: TScreenCoeff read fScreenCoeff write SetScreenCoeffEx

не совсем. так не скомпилится. надо так:

ScreenCoeff: TScreenCoeff read fScreenCoeff ; //можно по желанию добавить write fScreenCoeff

просто инициализируешь свойство не напрямую, а функцией.

MyObject.SetScreenCoeffEx(2, 3);


 
Ketmar ©   (2006-08-17 10:06) [11]

with?


 
DelphiLexx ©   (2006-08-17 10:09) [12]


> with?

Тебя не поняли.


 
StriderMan ©   (2006-08-17 10:10) [13]


> DelphiLexx ©   (17.08.06 10:09) [12]

он имел ввиду что-то типа

> with MyObject.ScreenCoeff do
> begin
>  WCoeff := 2;
>  HCoeff := 3;
> end;


 
Ketmar ©   (2006-08-17 10:15) [14]

> [12] DelphiLexx ©   (17.08.06 10:09)
вряд ли это моя проблема.

> [13] StriderMan ©   (17.08.06 10:10)
угу.



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
2-1157802908
qoop
2006-09-09 15:55
2006.10.01
сортировка


2-1158099340
Ref
2006-09-13 02:15
2006.10.01
тыблицы ADO


1-1156176876
zip0
2006-08-21 20:14
2006.10.01
Как узнать handle окна explorer a?


5-1140178910
mr. Den
2006-02-17 15:21
2006.10.01
Что не так с default ???


2-1158150328
greengeneral
2006-09-13 16:25
2006.10.01
Введите Имя





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