Форум: "Основная";
Текущий архив: 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