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