Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужна помощь!!! [D6, WinXP]


Страницы:   1 2 3 4

АлексЧерных ©   (2006-10-05 11:20:00) 

Люди, помогите! На лабах препод задал задачу. Сделать не возможно. Помогите. Вот текст условия: При нажатии на кнопку текст надписи на ней становится наклонным, при повторном нажатии - снова обычным. Можно пользоваться только присвоениемм. Использовать условный опрератор НЕЛЬЗЯ. Помогите.


oxffff   (2006-10-08 14:07:00) [1]


> sniknik ©   (07.10.06 10:55) [72]
> > Корректная реализация [65].
> не [65] а [17] как сказано в [67]. идея была высказана и
> ясна еще тогда


Я написал что [65] реализовано неккоректно.

Циклическая очередь, как элегантный вариант.

Докапываться и в мыслях не было.


sniknik   (2006-10-08 00:29:00) [2]

sniknik ©   (07.10.06 10:55) [72]
> Корректная реализация [65].
не [65] а [17] как сказано в [67]. идея была высказана и ясна еще тогда.

> Вопрос остается открытым ждем
не надоело докапываться? тем более к "букве закона", когда говорилли и считали сначала по другому... и вдруг важны стали послевведенные тобой ограничения...

считай, только тоже по "букве", только присвоения. и отстань уже.

{$J+}
procedure TForm1.Button1Click(Sender: TObject);
type
 PStl = ^TStl;
 TStl = record
   val : TFontStyles;
   next: PStl;
 end;
const
 ArStl: array[0..1] of TStl = ((val:[fsItalic];next:@ArStl[1]), (val:[];next:@ArStl[0]));
 Stl: PStl = (@ArStl[1]);
begin
 Stl:= Stl.next;
 with TButton(Sender).Font do Style:= Stl.val;
end;
{$J-}


oxffff   (2006-10-07 23:08:00) [3]

Percent   (07.10.06 09:49) [65]
Работает, но работает некорректно.  
Поскольку при style fsItalic выходит за границы Styles.
Работать может не всегда корректно.

sniknik ©   (07.10.06 10:55) [72]
Корректная реализация [65].

Вопрос остается открытым ждем

han_malign © и clickmaker ©

C двумя присваиваниями.


Шутник   (2006-10-07 11:55:00) [4]

Шутки на тему :)

1.

Инициализация:
Button1.Caption := 'Caption';
Button2.Caption := Button1.Caption;
Button2.Font.Style := [fsItalic];
Button1.Font.Style := [];
Button2.Visible := false;

Два присваивания:
Button2.Visible := Button1.Visible;
Button1.Visible := not Button1.Visible;

2.

Инициализация:
m_Style := [];
Button1.Font.Style := [fsItalic];

procedure TForm1.Button1Click(Sender: TObject);
begin
 PostMessage(Handle, WM_NEXTSTYLE, byte(Button1.Font.Style), 0);
 Button1.Font.Style := m_Style;
end;

procedure TForm1.WMNextStyle(var Msg: TMessage);
begin
 m_Style := TFontStyles(byte(Msg.WParam));
end;

3.

Инициализация:
m_bItalic := true;

Два присваивания и not:
Button2.Font.Handle := CreateFont(Button2.Font.Height,
                               0, 0, 0, 400, cardinal(m_bItalic),
                               0, 0, 0, 0, 0, 0, 0, PChar(Button2.Font.Name));
m_bItalic := not m_bItalic;

:)


sniknik   (2006-10-07 10:57:00) [5]

> (но тогда уже так просто не добавиш)
(но тогда уже fsBold так просто не добавиш)


sniknik   (2006-10-07 10:55:00) [6]

> А что разве in это оператор присваивания.
легко убирается, раз уж он вм так не угодил (но тогда уже так просто не добавиш)

Stl: array[0..2] of TFontStyles = ([fsItalic], [], []);

with TButton(Sender).Font do
  Style:= Stl[Byte(Style)];

привединие типа насколько заметил вами за операцию не считается.


oxffff   (2006-10-07 10:48:00) [7]

Кстати [] тоже оператор.


oxffff   (2006-10-07 10:46:00) [8]


> sniknik ©   (07.10.06 10:43) [68]
> p.s. fsBold (и все остальное) легко добавляется в этом случае,
>  в значение массива (... TFontStyles = ([fsBold, fsItalic],
>  []);), проверка не меняется ведь нам надо переключать только
> туда/обратно.


А как тогда для произвольных неизвестных стилей?

Ждем двух присваиваний.


sniknik   (2006-10-07 10:43:00) [9]

p.s. fsBold (и все остальное) легко добавляется в этом случае, в значение массива (... TFontStyles = ([fsBold, fsItalic], []);), проверка не меняется ведь нам надо переключать только туда/обратно.


oxffff   (2006-10-07 10:43:00) [10]


> это было, только что в код не оформлено
> han_malign ©   (05.10.06 12:01) [17]
> > а еще можно классическим массивом с булевым индексом -
>  хотя я бы, на месте преподавателя, посчитал это неявным
> if-ом...
>
> и предполагалось видимо так (еще элегантнее...)
>
> procedure TForm1.Button1Click(Sender: TObject);
> const
>  Stl: array[boolean] of TFontStyles = ([fsItalic], []);
> begin
>  with TButton(Sender).Font do
>    Style:= Stl[fsItalic in Style];
> end;


А что разве in это оператор присваивания.
Использовать можно только оператор присваивания.


sniknik   (2006-10-07 10:34:00) [11]

это было, только что в код не оформлено
han_malign ©   (05.10.06 12:01) [17]
> а еще можно классическим массивом с булевым индексом - хотя я бы, на месте преподавателя, посчитал это неявным if-ом...

и предполагалось видимо так (еще элегантнее...)

procedure TForm1.Button1Click(Sender: TObject);
const
 Stl: array[boolean] of TFontStyles = ([fsItalic], []);
begin
 with TButton(Sender).Font do
   Style:= Stl[fsItalic in Style];
end;


oxffff   (2006-10-07 10:24:00) [12]


> type
>  TNewStyle = (fsNone, fsItalic);
>
> const
>  Styles: array[fsNone..fsItalic] of TNewStyle = (fsItalic,
>  fsNone);
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
>  Button1.Font.Style := [TFontStyle(Styles[TNewStyle(Button1.
> Font.Style)])];
> end;
>
> P.S. Кхм...


Достаточно элегантно. Но работать будет только для [fsItalic] [].
А что у вас с другими стилями. Например [fsItalic,fsBold].

P.S. Кхм...


Percent   (2006-10-07 09:49:00) [13]

type
 TNewStyle = (fsNone, fsItalic);

const
 Styles: array[fsNone..fsItalic] of TNewStyle = (fsItalic, fsNone);

procedure TForm1.Button1Click(Sender: TObject);
begin
 Button1.Font.Style := [TFontStyle(Styles[TNewStyle(Button1.Font.Style)])];
end;

P.S. Кхм...


oxffff   (2006-10-06 20:41:00) [14]


> tmpStyle:= FAlternativeFontStyle;
> FAlternativeFontStyle:= Font.Style;
> Font.Style:= tmpStyle;


FAlternativeFontStyle должна быть еще и глобальной, которую тоже надо инициализировать.

var FAlternativeFontStyle:Tfontstyles=[fsItalic]

Поэтому если считать по честному, то здесь 3 присвоения в  Onclick
+ 1 на инициализацию. Так что даже на честных три присвоения не дотягивает.

[51] вариант интересный. Только в рамках курса "Бесконечные пулеметы".
Хотя заслуживает внимания и уважения.

А где два присвоения? Честных.
Ждемс.


oxffff   (2006-10-06 20:32:00) [15]


> han_malign ©   (06.10.06 11:31) [62]
> tmpStyle:= FAlternativeFontStyle;
> FAlternativeFontStyle:= Font.Style;
> Font.Style:= tmpStyle;


А где здесь 2 присвоения?


han_malign   (2006-10-06 11:31:00) [16]

tmpStyle:= FAlternativeFontStyle;
FAlternativeFontStyle:= Font.Style;
Font.Style:= tmpStyle;


oxffff   (2006-10-05 23:34:00) [17]

han_malign ©   (05.10.06 16:25) [56]

> увы...

- ну почему же увы, я до этого не додумался... У меня тривиальный "Exchange"...

Просим вас код в студию.


Loginov Dmitry   (2006-10-05 23:22:00) [18]

Препод - садист. Нет, чтобы действительно чем-нить полезным занять, заставляет людей заниматься совершенно бестолковой ерундятиной.


Плохиш   (2006-10-05 23:14:00) [19]


> TUser ©   (05.10.06 18:11) [58]

Да я про аФФтара в свете твоего ответа :-)


TUser   (2006-10-05 18:11:00) [20]

> С такими знаниями и на лабе, я рыдал... :-)

Это мы не проходили, это нам не задовали. Лаба не моя.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо