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

Вниз

Нужна помощь!!!   Найти похожие ветки 

 
han_malign ©   (2006-10-05 13:13) [40]


> > одним оператором присваивания
> четырьмя

- конкретно в OnClick - тремя


 
oxffff ©   (2006-10-05 13:14) [41]

Уважаемые. Снизойдите до меня.


 
clickmaker ©   (2006-10-05 13:17) [42]


> конкретно в OnClick - тремя

двумя


 
oxffff ©   (2006-10-05 13:21) [43]

Ого. Прошу вас код в студию.


 
han_malign ©   (2006-10-05 13:22) [44]


> двумя

- не - двумя никак - без промежуточного запоминания значения никому еще обойтись не удавалось...


 
clickmaker ©   (2006-10-05 13:23) [45]


> Ого. Прошу вас код в студию

ну дай померяться )) может кто-то меньше предложит


 
clickmaker ©   (2006-10-05 13:24) [46]


> без промежуточного запоминания значения

это еще зачем?


 
han_malign ©   (2006-10-05 13:30) [47]


> > без промежуточного запоминания значения
> это еще зачем?

- ну тогда мне остается только процитировать - "Ого. Прошу вас код в студию."...


 
clickmaker ©   (2006-10-05 13:40) [48]

может лучше от препода подождем ответа, а?
все равно [22] и [32] не переплюнуть


 
han_malign ©   (2006-10-05 13:50) [49]


> все равно [22] и [32] не переплюнуть

- ну допустим [32] мне переплевывать не надо, я его еще в [15] обозначил... А вот два присваиваивания - переплюнет все...


 
clickmaker ©   (2006-10-05 14:38) [50]

Эх, самое обидное - чел лабу сдаст, а пива никому из присутствующих здесь не поставит...


 
Percent   (2006-10-05 15:14) [51]

procedure TForm1.OnClick1(Sender: TObject);
begin
 Button1.Font.Style := [fsItalic];
 Button1.OnClick := OnClick2;
end;

procedure TForm1.OnClick2(Sender: TObject);
begin
 Button1.Font.Style := [];
 Button1.OnClick := OnClick1;
end;


 
sniknik ©   (2006-10-05 15:17) [52]

[32] жутко невнятная запись, если уж делать то понятно, для добавлений еще параметра, имхо, лучше мой вариант "модернезировать"

procedure TForm1.Button1Click(Sender: TObject);
const
 Bold      = 1;
 Italic     = 2;
 Underline = 4;
 StrikeOut = 8;
begin
 with TButton(Sender).Font do
   Style:= TFontStyles(Byte(Style) xor (Bold+Italic));
end;

все в туже одну асемблерную команду скомпилится...

clickmaker ©   (05.10.06 14:38) [50]
ну раз не удалось получить выгоды, считай из чисто альтруистких соображений помогли. ;о)) а впредь надо быть сдержанней.


 
Плохиш ©   (2006-10-05 15:22) [53]


> Percent   (05.10.06 15:14) [51]

А что жирность, подчёркивание и перечёркивание во внимание не принимаются?


 
han_malign ©   (2006-10-05 15:34) [54]


> Percent   (05.10.06 15:14) [51]

> clickmaker ©
- у тебя такой же ход мыслей? У меня решение попроще, без "неявных ветвлений", но с лишним присваиванием...


 
Clickmaker ©   (2006-10-05 15:53) [55]


> - у тебя такой же ход мыслей?

увы...


 
han_malign ©   (2006-10-05 16:25) [56]


> увы...

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


 
han_malign ©   (2006-10-05 16:37) [57]

Если лабораторная в рамках темы "Конечные автоматы", то вариант [51] - самый правильный... Одна из оптимальных реализаций машины состояний...


 
TUser ©   (2006-10-05 18:11) [58]

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

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


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


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

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


 
Loginov Dmitry ©   (2006-10-05 23:22) [60]

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


 
oxffff ©   (2006-10-05 23:34) [61]

han_malign ©   (05.10.06 16:25) [56]

> увы...

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

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


 
han_malign ©   (2006-10-06 11:31) [62]

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


 
oxffff ©   (2006-10-06 20:32) [63]


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


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


 
oxffff ©   (2006-10-06 20:41) [64]


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


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

var FAlternativeFontStyle:Tfontstyles=[fsItalic]

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

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

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


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

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-07 10:24) [66]


> 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. Кхм...


 
sniknik ©   (2006-10-07 10:34) [67]

это было, только что в код не оформлено
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;


 
sniknik ©   (2006-10-07 10:43) [68]

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


 
oxffff ©   (2006-10-07 10:43) [69]


> это было, только что в код не оформлено
> 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 это оператор присваивания.
Использовать можно только оператор присваивания.


 
oxffff ©   (2006-10-07 10:46) [70]


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


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

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


 
oxffff ©   (2006-10-07 10:48) [71]

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


 
sniknik ©   (2006-10-07 10:55) [72]

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

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

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

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


 
sniknik ©   (2006-10-07 10:57) [73]

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


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

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

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;

:)


 
oxffff ©   (2006-10-07 23:08) [75]

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

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

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

han_malign © и clickmaker ©

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


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

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-08 14:07) [77]


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


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

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

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



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

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

Наверх




Память: 0.6 MB
Время: 0.045 c
15-1159773469
laok
2006-10-02 11:17
2006.10.22
JVCL для Delphi 10


2-1159864681
Officeman
2006-10-03 12:38
2006.10.22
[TListView] как проконтролировать клик пр.кнопки мыши


2-1159900578
sinus
2006-10-03 22:36
2006.10.22
Сокеты


3-1156223726
northling
2006-08-22 09:15
2006.10.22
Ошибка при работе с параметрами Firebird 1.5


15-1159765199
Ega23
2006-10-02 08:59
2006.10.22
Вынужден на некоторое время покинуть форум.





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