Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
ВнизС++ не перестает удивлять. Найти похожие ветки
← →
Riply © (2007-10-26 11:28) [0]Здравствуте !
Помогите, пожалуйста, разобраться с вражьим языком.
Написана на нем очень большая и длинная процедура (сильно много букав тама :)
Имеет она, примерно, такой вид:
LONG STDCALL
SomeProc(TSomeType Param)
{
...........
if Condition1
{
PVOID Buffer;
..........
if Condition2
{
PVOID Buffer;
..........
}
где ".........." - километр кода.
Buffer - одна и та же переменная или разные (регистром они не отличаются) ?
Как бы мне задекларировать эти два Buffer`а ?
Можно ли (нужно ли) обойтись одним или надо два (Buffer1 и Buffer2) ?
P.S.
А еще кто-то говорил о наглядности С :)
← →
Игорь Шевченко © (2007-10-26 11:30) [1]Плохой код можно написать на любом языке.
There"s no limit to how bad things can get (c)
> Как бы мне задекларировать эти два Buffer`а ?
LONG STDCALL
SomeProc(TSomeType Param)
{
PVOID Buffer;
.....
← →
Desdechado © (2007-10-26 11:32) [2]Это просто разные переменные с одинаковым именем. Отличаются областью видимости. Но если тип у них один, можно при переводе на паскаль обявить одну переменную, как ИШ показал.
← →
Riply © (2007-10-26 11:44) [3]Спасибо всем.
> [1] Игорь Шевченко © (26.10.07 11:30)
> Плохой код можно написать на любом языке.
А я-то думала, что толко на Delphi можно разные "перлы" выдавать :)
← →
guav (2007-10-26 11:46) [4]Переменные разные, но ничто не мешает взять одну.
> А еще кто-то говорил о наглядности С :)
В данном как раз есть преимущество, можно ограничить область видимости, сделав её минимально необходимой и отложить объявление до места инициализации, и, таким образом, не иметь дело с переменой которая видна но не инициализирована.
Только это С++ а не С.
← →
clickmaker © (2007-10-26 11:46) [5]
> А я-то думала, что толко на Delphi можно разные "перлы"
> выдавать
на Д как раз так при всем желании не сделаешь
← →
Ega23 © (2007-10-26 11:47) [6]
> А я-то думала, что толко на Delphi можно разные "перлы"
> выдавать :)
:)
#include <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n"+,#"/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/"r :"d*"3,}{w+K w"K:"+}e#";dq#"l \
q#"+d"K#!/+k#;q#"r}eKK#}w"r}eKK{nl]"/#;#q#n"){)#}w"){){nl]"/+#n";d}rw" i;# \
){nl]!/n{n#"; r{#w"r nc{nl]"/#{l,+"K {rw" iK{;[{nl]"/w#q#n"wk nw" \
iwk{KK{nl]!/w{%"l##w#" i; :{nl]"/*{q#"ld;r"}{nlwb!/*de}"c \
;;{nl"-{}rw]"/+,}##"*}#nc,",#nw]"/+kd"+e}+;#"rdq#w! nr"/ ") }+}{rl#"{n" ")# \
}"+}##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=="/")+t,_,a+1)
:0<t?main(2,2,"%s"):*a=="/"||main(0,main(-61,*a,
"!ek;dc i@bK"(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}
← →
Игорь Шевченко © (2007-10-26 11:51) [7]Ega23 © (26.10.07 11:47) [6]
if (pos(" ",VarToStr(Values))<>0) or
(VarToStr(Values)<>trim(VarToStr(Values))) or
((Length(VarToStr(Values))-
Length(StringReplace(VarToStr(Values)," ","",[rfReplaceAll])))<>2) then
← →
Ega23 © (2007-10-26 11:58) [8]
> Игорь Шевченко © (26.10.07 11:51) [7]
Тоже хорошо. Но IncDay - круче... :)
Но, откровенно говоря, такого ужаса как в [6] на паскале я себе просто представить не могу.
← →
Riply © (2007-10-26 12:01) [9]> [6] Ega23 © (26.10.07 11:47)
А это "из жизни" или чья-то шутка ?
← →
guav (2007-10-26 12:01) [10]
> Ega23 © (26.10.07 11:47) [6]
Скомпилил, выполнил. Супер ! Интересно как такое было написано ?
← →
Riply © (2007-10-26 12:03) [11]> [4] guav (26.10.07 11:46)
> В данном как раз есть преимущество,
Сомнительное "преимущество", когда в рамках одной процедуры
есть N разных переменных с одинаковыми именами :)
← →
vajo (2007-10-26 12:06) [12]>guav (26.10.07 12:01) [10]
и что там было?
← →
@!!ex © (2007-10-26 12:06) [13]> [11] Riply © (26.10.07 12:03)
Спорнвй вопрос. Они же каждая - в своей зоне видимости.
ВАс же не удивлет когда у одного класса в разныхметодах используется одна и таже переменная?
Они в разных зонах видимости. Так что ничего особенного.
← →
guav (2007-10-26 12:09) [14]
> Riply © (26.10.07 12:03) [11]
Я не про этот код, я вообще.
Если все области видимости достаточно короткие, то вполне можно использовать имя повторно. Ты ж не испытываешь проблем с одинаковыми именами локальных переменных в разных методах, не так ли ?
← →
Petr V. Abramov © (2007-10-26 12:09) [15]> Riply © (26.10.07 12:03) [11]
это какая-нить i и в процедуре несколько while`ов - полезно, не надо забывать обнулить.
← →
guav (2007-10-26 12:09) [16]
> vajo (26.10.07 12:06) [12]On the first day of Christmas my true love gave to me
a partridge in a pear tree.
On the second day of Christmas my true love gave to me
two turtle doves
and a partridge in a pear tree.
On the third day of Christmas my true love gave to me
three french hens, two turtle doves
and a partridge in a pear tree.
On the fourth day of Christmas my true love gave to me
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the fifth day of Christmas my true love gave to me
five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the sixth day of Christmas my true love gave to me
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the seventh day of Christmas my true love gave to me
seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the eigth day of Christmas my true love gave to me
eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the ninth day of Christmas my true love gave to me
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the tenth day of Christmas my true love gave to me
ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the eleventh day of Christmas my true love gave to me
eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the twelfth day of Christmas my true love gave to me
twelve drummers drumming, eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
← →
Юрий Зотов © (2007-10-26 12:10) [17]> Riply © (26.10.07 12:03) [11]
> Сомнительное "преимущество", когда в рамках одной процедуры
> есть N разных переменных с одинаковыми именами :)
Они в разных блоках и в каждом актуальна своя. Вполне нормально.
← →
Riply © (2007-10-26 12:41) [18]Т.е. в C-и, блоки это как бы такие маленькие, самостоятельные подпроцедурки ? :)
← →
@!!ex © (2007-10-26 12:43) [19]> [18] Riply © (26.10.07 12:41)
если смотреть с точки зрения зоны видимости переменных - то да.
← →
KSergey © (2007-10-26 12:44) [20]> Riply © (26.10.07 12:41) [18]
> Т.е. в C-и, блоки это как бы такие маленькие, самостоятельные подпроцедурки ? :)
В смысле области видимости объявленных в них переменных - видимо да
← →
KSergey © (2007-10-26 12:45) [21]:)))
← →
Alkid © (2007-10-26 13:33) [22]
> Ega23 © (26.10.07 11:47) [6]
Та ну, это же явный стёб :)
Примерно из разряда программ на Malbolge и прочего исследования границ сознания :)
← →
Ega23 © (2007-10-26 13:36) [23]
> Та ну, это же явный стёб :)
То что это стёб - это ясно. Тут другое - напиши такю фигню на паскале.. :)
Я, честно говоря, даже представить себе не могу.
Хотя, если принять как следует.... :)
← →
Alkid © (2007-10-26 13:47) [24]
> То что это стёб - это ясно. Тут другое - напиши такю фигню
> на паскале.. :)
> Я, честно говоря, даже представить себе не могу.
> Хотя, если принять как следует.... :)
Ну хз. Воообще там интесивно, я смотрю, используется тернанрый оператор, который не имеет прямого аналога в Дельфи.
← →
EvChul © (2007-10-26 15:14) [25]Набрел где-то на следующий код.
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(_(_(_(_(^(,^%),^,),^,),^/)+^`+_(^(,_(^%,_(^,,_(^,,^/)))));
end;
Извратиться везде можно.
← →
homm © (2007-10-26 15:25) [26]> [25] EvChul © (26.10.07 15:14)
И какое будет сообщение?
← →
EvChul © (2007-10-26 15:33) [27]homm © (26.10.07 15:25) [26]
И какое будет сообщение?
Hello world!
← →
@!!ex © (2007-10-26 15:38) [28]> [25] EvChul © (26.10.07 15:14)
не компилится.
← →
guav © (2007-10-26 17:34) [29]
> @!!ex © (26.10.07 15:38) [28]
Не хватает чего-то вродеfunction _(__,___:string):string;
begin
_:=__+___;
end;CODE>
← →
jack128_ (2007-10-26 17:51) [30]
> EvChul © (26.10.07 15:14) [25]
ну тут то всего одна специфическая фишка языка использована, в отличии от сишного изврата...
← →
Riply © (2007-10-27 19:04) [31]За написание процедур, содержащих более ста сторочек кода,
должен полагаться расстрел на месте. Вот.
:)
← →
Petr V. Abramov © (2007-10-27 19:15) [32]> Riply © (27.10.07 19:04) [31]
а за написание более одного оператора на строке? :)
← →
Steep (2007-10-27 19:19) [33]
function _(__,___:string):string;
begin
_:=__+___;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(_(_(_(_(^(,^%),^,),^,),^/)+^`+_(^(,_(^%,_(^,,_(^,,^/)))));
end;
А можете объяснить это как получается?? 0_о
← →
Anatoly Podgoretsky © (2007-10-27 19:21) [34]> Petr V. Abramov (27.10.2007 19:15:32) [32]
Тогда гранату сразу бросать.
← →
Riply © (2007-10-27 19:23) [35]> [32] Petr V. Abramov © (27.10.07 19:15)
> а за написание более одного оператора на строке? :)
В данном случае можно обойтись смертной казнью через отлучение от компьютера :)
← →
tesseract © (2007-10-27 19:24) [36]
> За написание процедур, содержащих более ста сторочек кода,
> должен полагаться расстрел на месте. Вот.
Ой, у меня больше тысячи расстрелов в запасе.
> То что это стёб - это ясно. Тут другое - напиши такю фигню
> на паскале.. :)
Паскаля идея базовая, такой фигни допускать нет :-)
ЗЫ : Магистра Йоды тайна раскрыта, фортрана специалист да великий он
← →
jack128 © (2007-10-27 20:02) [37]
> А можете объяснить это как получается?? 0_о
В дельфи есть такой синтаксис:
^A , где A - любой символ. Означает он chr(ord("A") - 64).
Таким образом:
^A = #1
^B = #2
и так далее.
Плюс к этому учти, что символ подчеркивания может использоваться в идентификаторах наравне с буквами.. Вот так и получается..
← →
Steep (2007-10-27 20:45) [38]
> В дельфи есть такой синтаксис:^A , где A - любой символ.
> Означает он chr(ord("A") - 64).Таким образом:^A = #1^B
> = #2и так далее. Плюс к этому учти, что символ подчеркивания
> может использоваться в идентификаторах наравне с буквами.
> . Вот так и получается..
усе равно не понял...
понял только саму функцию....
> ^A , где A - любой символ. Означает он chr(ord("A") -
> 64).
то что chr(ord("A") - 64 - я понимаю, а вот ^A = #1
нет
← →
Anatoly Podgoretsky © (2007-10-27 20:49) [39]
> где A - любой символ. Означает он chr(ord("A") - 64).
Вообще то, если точно, тоchr(ord(char) and $1F).
← →
guav © (2007-10-27 21:47) [40]
> За написание процедур, содержащих более ста сторочек кода,
>
> должен полагаться расстрел на месте. Вот.
> :)
"Hey! I hate these Microsoft guys! What a rotten compiler! It only accepts 16384 local variables in a function!"
> Anatoly Podgoretsky © (27.10.07 20:49) [39]
Если бы так, сообщение было бы другое.
Кстати, по сабжу, много критики С++ здесь: http://yosefk.com/c++fqa/index.html .
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.045 c