Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
ВнизИ всё-таки он бажный (про одно предупреждение) Найти похожие ветки
← →
Vovan#1 (2006-09-25 00:07) [0]То предупреждение, что выдавал компилятор, не давало мне покоя. Как так - удаляешь неиспользуемую переменную и предупреждение пропадает. Стал искать подобное в Интернете и нашёл, что таких сообщений много. Вот, например, легко воспроизводимое:
{$HINTS OFF}
function GetAsString: String;
var
v00, v01, v02, v03, v04, v05, v06, v07, v08, v09,
v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
v30, v31: Integer;
begin
Result := "" ;
end;
{$HINTS ON}
А у меня как раз возвращает динамический массив.
Вывод: Delphi - глючная программа.
← →
Anatoly Podgoretsky © (2006-09-25 00:09) [1]
> Вывод: Delphi - глючная программа.
Вывод не верный.
← →
Ketmar © (2006-09-25 00:15) [2]что за бред на ночь глядя?
← →
Vovan#1 (2006-09-25 00:15) [3]>Вывод не верный.
Анатолий Подгорецкий, ну не мучайте. Скажите, что я ошибся вот в таком то месте и если так исправить, то не будет предупреждения. А до тех пор конечно же у меня будет такое о Delphi.
← →
Ketmar © (2006-09-25 00:21) [4]>[3] Vovan#1 25-Sep-2006, 00:15
>я ошибся вот в таком то месте
ошибся в том, что вообще за программирование сел. метла в магазине хозтоваров.
← →
Vovan#1 (2006-09-25 00:24) [5]2 Ketmar:
Вместо плоского телевизора - обои менять в частотой 24 рулона в секунду. Отличный совет.
← →
Ketmar © (2006-09-25 00:25) [6]>[5] Vovan#1 25-Sep-2006, 00:24
какой вопрос -- такой ответ. как ещё можно ответить на полный неадекват?
← →
Anatoly Podgoretsky © (2006-09-25 00:28) [7]
> Анатолий Подгорецкий, ну не мучайте.
Зачем мучать, тебе уже все рассказали, правда есть и другие профессии.
← →
Vovan#1 (2006-09-25 00:33) [8]>какой вопрос -- такой ответ. как ещё можно ответить на полный неадекват?
Ну какой же он неадекват. Замечен баг в механизме предпреждений Delphi. Вы сказали - бага нет. Анатолий Подгорецкий на все мои утверждения сказал: "А всё равно она вертится, в смысле: да, может быть неопределено." Я локализовал проблему и дал код, который можно было изучать. Ветка вдруг опустела. И вот я нахожу на сайта Борланда непогашенное сообщение о баге - почти как у меня. Ну и говорю вам - есть, есть баг. А если есть баг, то программа глючная. Я ж не говорю - глючнейшая. Ну просто чучуть глючненькая.
Предвижу в ответ ещё какие-нибудь советы, которые прямо по тексту не отвечают на мои утверждения и прошу - не надо. Давай лучше по тексту. что не так сказал, с чем не согласен? Потрать уж хоть один раз, пожалуйста, на это дело времени больше, чем обычно (очень прошу).
← →
Zeqfreed © (2006-09-25 00:38) [9]> [8] Vovan#1 (25.09.06 00:33)
> А если есть баг, то программа глючная
Что дальше то?
← →
Ketmar © (2006-09-25 00:39) [10]код, приведённый в примере, есть бред. %-)
наличие же ошибок в компиляторе никто не отрицает. но в данном случае даже этого нет. сообщение-то какое? "might be undefined". а может и не быть. так что технически -- это даже не баг. %-)
впрочем, у меня тоже кое-где в исходниках встречаются комментарии типа "stupid compiler thinks". и на реальные баги компилятора я наступал. удивлят только одно: что их так мало.
← →
Vovan#1 (2006-09-25 00:40) [11]>Что дальше то?
Мне только признание существования этого бага и нужно.
← →
Плохиш © (2006-09-25 00:41) [12]О и в этой ветки поколение пепси зажигает на ночь глядя....
← →
Vovan#1 (2006-09-25 00:41) [13]>Ketmar © (25.09.06 00:39) [10]
Вот это позиция. Порадовал и объяснил.
← →
Плохиш © (2006-09-25 00:42) [14]
> Vovan#1 (25.09.06 00:07)
> То предупреждение, что выдавал компилятор, не давало мне
> покоя. Как так - удаляешь неиспользуемую переменную и предупреждение
> пропадает.
Я вообще рыдал....
Таким кадрам даже метлу доверять нельзя.
← →
Eraser © (2006-09-25 00:43) [15]> [0] Vovan#1 (25.09.06 00:07)
тестировал на BDS2006.
выдало только варнинг (а никто и не обещал, что варнинки выдаваться не будет!) "[Pascal Warning] Unit1.pas(34): W1035 Return value of function "GetAsString" might be undefined".
Никаких хинтов не увидел.
← →
Vovan#1 (2006-09-25 00:47) [16]>Никаких хинтов не увидел.
Не о них речь.
← →
DrPass © (2006-09-25 00:53) [17]В компиляторе Delphi могут быть мелкие глюки. Которые еще надо поискать, и которые уж точно не вредят. Ну и что? Такие же есть в любом компиляторе, кроме разве что самых примитивных. Более противные баги можно найти в Delphi IDE. Но опять же, и что тут такого? Они есть в любом программном комплексе такой сложности. Та же Visual Studio 2005 иногда любиты вылетать, унося с собой в могилу весь несохраненный код (слава богу, за Delphi7 такого не водится)
← →
Ketmar © (2006-09-25 01:07) [18]>[14] Плохиш(c) 25-Sep-2006, 00:42
>Я вообще рыдал....
>Таким кадрам даже метлу доверять нельзя.
нет, на самом деле он прав. действительно, ast travrerser (думаю, именно это используется в компиляторе, но точно не знаю, конечно %-) немного путается. каким-то образом он находит пути завершения процедуры, которых не существует. и действительно, если убрать блок "var", никаких варнингов уже не дают.
налетели мы тут не из-за этого, а из-за безапелляционности заявлений и кривости кода примера. я так понимаю, что если компилятор даёт хинт, то надо этот хинт внимательно почитать, и сделать так, чтобы его не было. %-)
← →
Германн © (2006-09-25 01:10) [19]
> Vovan#1 (25.09.06 00:40) [11]
>
> >Что дальше то?
>
> Мне только признание существования этого бага и нужно.
>
А о каком собсс-но баге речь-то идёт?
Или "подсказки" с "предупреждениями" путаешь?
← →
Eraser © (2006-09-25 01:14) [20]> [18] Ketmar © (25.09.06 01:07)
наверное я уже что-то недопонял и мне пора спать..
какие у автора притензии к работе компилятора и выдаваемым им подсказкам и предупреждениям в этом конкретном примере [0]? так и не понял..
← →
Ketmar © (2006-09-25 01:14) [21]>[19] Германн(c) 25-Sep-2006, 01:10
>А о каком собсс-но баге речь-то идёт?
а ты код скомпиляй, и увидишь. %-)
← →
Ketmar © (2006-09-25 01:15) [22]>[20] Eraser(c) 25-Sep-2006, 01:14
во вполне однозначном коде компилятор жалуется на то, что "return value might be undefined". что, в принципе, похоже на баг, но не баг -- потому что "может быть не определено" и "не определено" -- вещи разные. %-)
← →
Eraser © (2006-09-25 01:17) [23]> [22] Ketmar © (25.09.06 01:15)
во! так бы сразу )
ушел спать.. )
← →
Eraser © (2006-09-25 01:21) [24]хм.. данный баг возникает при количестве переменных >= 32..
← →
DrPass © (2006-09-25 01:37) [25]
> данный баг возникает при количестве переменных >= 32..
Ну да - в "рабочей ситуации" он скорее всего и не встретится никогда
← →
Ketmar © (2006-09-25 01:40) [26]>[24] Eraser(c) 25-Sep-2006, 01:21
>хм.. данный баг возникает при количестве
>переменных >= 32..
угу. есть подозрение, что при превышении определённого лимита Delphi просто "вырубает" анализатор и выдаёт предупреждение -- на всякий случай.
← →
Германн © (2006-09-25 01:46) [27]
> Ketmar © (25.09.06 01:14) [21]
>
> >[19] Германн(c) 25-Sep-2006, 01:10
> >А о каком собсс-но баге речь-то идёт?
> а ты код скомпиляй, и увидишь. %-)
>
Увидел. Смутило сначала то, что автор использовал директивы про хинты. Никак не относящиеся к вопросу. Увидел в Д6 и в BDS2006. А в Д4 - всё пучком! Я то в основном на ней живу, поэтому не сразу и сообразил.
← →
sniknik © (2006-09-25 10:50) [28]> угу. есть подозрение, что при превышении определённого лимита Delphi просто "вырубает" анализатор и выдаёт предупреждение --
> на всякий случай.
очень похоже.
использовать пару этих переменных (уменьшить список неиспользуемых) и предупреждение пропадает. (не говоря уже о устранении из явно ненужного var ...)
function GetAsString(st: string): String;
var
v00, v01, v02, v03, v04, v05, v06, v07, v08, v09,
v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
v30, v31: integer;
begin
v00:= 1;
v01:= 2;
result:= IntToStr(v00+v01);
end;
← →
TUser © (2006-09-25 11:13) [29]> sniknik © (25.09.06 10:50) [28]
Не пропадает. D7. Реально компилятор выдает ограниченное кол-во хинтов "declared but never used" - до 29й переменной. Судя по контрольным суммам экзешники генерируются разные, так что те только хинт не выдает, но и в код непонятно что пихает. Другое дело, что надо быть человеком со специфическими особенностями, чтобы 30 неиспользуемых переменных сотворить в одной функции.
← →
sniknik © (2006-09-25 11:20) [30]> Не пропадает. D7. Реально компилятор выдает ограниченное кол-во хинтов "declared but never used"
вопрос не про "declared but never used", которое в обшемто линейно и понятно, а про "Return value of function ... might be undefined" при количестве "notused" переменных >= 32 (которое не совсем ожидаемо...).
p.s. видно не одного Германна манипуляции с хинтами "смутили" ;о))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.039 c