![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компилятор пропускает команду... [Delphi, Windows]
HelloEverybody © (2008-03-13 19:01:00)Всем доброго времени суток! :)
Не первый раз сталкиваюсь с проблемой в Delphi, когда компилятор в процессе отладки (да и вообще) пропускает команду. Например в
procedureUpdateGraph(Anum, Number:integer);
var
...
num,i,j,maxi,jend:integer;
...
begin
...
i:=0;
j:=0;
...
Он переменной i присваивает ноль, а переменной j нет. В отладчике вообще пропускает эту строчку. При этом не ругается, как будто все в порядке... никак не пойму в чем дело?
Буду благодарен за совет!
Dimaxx (2008-03-17 10:20:00) [1]
> Я понял только то, что "языком молоть"(сорри за выражение:
> ) ты мастер
Тоже могу сказать и про тебя... :) Только это выражение тут неприменимо.
> И это.... не вздумай обидеться
Интересно на что я должен обидеться? :)
{RASkov} (2008-03-17 01:26:00) [2]> Dimaxx ©
И это.... не вздумай обидеться ;) ...ну мало ли) я ж в шутку [87])
В прочем можешь и обидеться - меня ты этим не обидешь :)
{RASkov} (2008-03-17 01:22:00) [3]> [86] Dimaxx © (17.03.08 01:08)
> Косяка нет, а про 6 строк и 100 строк ты так и не понял..
Я понял только то, что "языком молоть"(сорри за выражение:) ты мастер, а что либо конкретно сказать по теме, увы... :(
Ладно... не буду тебя больше отвлекать - работай. Иначе не сюда "глючного кода" не напишешь, и работу свою не выполнишь ;)
> Удачи...
Спасибо, я не откажусь)
Dimaxx (2008-03-17 01:08:00) [4]
> Ищи, как говорится (см [81]), свои косяки, а не компилятора...
Тебе бы следователем работать... Косяка нет, а про 6 строк и 100 строк ты так и не понял... :) Удачи...
Anatoly Podgoretsky (2008-03-17 00:19:00) [5]> sniknik (16.03.2008 23:59:23) [83]
Лучше
ShowMessage(IntToStr(Fu));
sniknik (2008-03-17 00:16:00) [6]или даже лучше так
procedure TForm1.Button2Click(Sender: TObject);
function Fu: Byte;
begin
try
raise Exception.Create('always');
result:= 1;
except
end;
end;
begin
ShowMessage(IntToStr(Fu));
end;
так, просто таки очевидно, что функция действительно вернет не инициализированное значение.
sniknik (2008-03-16 23:59:00) [7]{RASkov} © (16.03.08 14:24) [71]
> Впрочем пример немного переделаю:
упрости, много лишнего.
procedure TForm1.Button2Click(Sender: TObject);
function Fu: Byte;
begin
try
result:= 1;
except
end;
end;
begin
case Fu of
1: ShowMessage('code 1');
end;
end;
так достаточно.
{RASkov} (2008-03-16 23:20:00) [8]
> Dimaxx © (16.03.08 20:48) [78]
> Того что нет?
Того что ЕСТ...)
> Что я там должен искать?
Ищи, как говорится (см [81]), свои косяки, а не компилятора....
:) Удачи.
Dimaxx (2008-03-16 23:08:00) [9]
> Хотя, и весьма сомнительно.
Сомневаться надо по поводу себя, а не других. :)
Anatoly Podgoretsky (2008-03-16 21:08:00) [10]
> Зачем? Я же не пишу свой компилятор.
Тогда не задавай вопрос.
Этоже издевательство, сначала задаем, а потом говорим что не надо.
Leonid Troyanovsky (2008-03-16 20:58:00) [11]
> Dimaxx © (16.03.08 20:48) [78]
> Что мне для этого надо изучить - я изучу.
Что же, будем надеяться.
Хотя, и весьма сомнительно.
--
Regards, LVT.
Dimaxx (2008-03-16 20:48:00) [12]
> Вот и ищи в своих 100-200 строках нечто то что я тебе привел
> в 6... и поверь, найдешь :)
Вот ведь буквоед! :) Что я там должен искать? Того что нет? Ты привел точно такой же пример что и я. Весь остальной код у меня не касается этой переменной. Я привел тот участок, где она используется. Если у тебя эти 6 строк дают тот же хинт, что и мои 100 - значит дело не в остальном коде, а в этих 6 строках (только в моем коде их всего 2, если не считать Р:=0)... Как еще объяснить? :)
> Изучи как работает компиляция в Дельфи
Зачем? Я же не пишу свой компилятор. Меня интересует написание программы, получение exe из кода и правильная работа. А анализ кода, компиляцию и сборку изучали и писали авторы Дельфи. Для написания программы мне не нужно знать как это делает Дельфи внутри. Меня, например, не интересует как работает 3D Max - мне важен результат, полученный с его помощью. А применить этот результат - это уже моя забота. Что мне для этого надо изучить - я изучу. А лезть в дебри ни к чему...
Anatoly Podgoretsky (2008-03-16 19:00:00) [13]Изучи как работает компиляция в Дельфи, а если очень хочешь, то делай перестроение, а не компиляцию.
Плохиш (2008-03-16 18:51:00) [14]
> Dimaxx © (16.03.08 13:39) [64]
> Тебе видео снять?? Я говорю не про проверку синтаксиса,
> а про компиляцию (у меня кнопка Compile вынесена на панель).
> При первой компиляции вылезают хинты/варнинги (согласен),
> но если тут же нажать второй раз компиляция - все хинты/варнинги
> исчезают (исчезает и окно, в котором они выводились). :)
При компиляции, в отличии от " build", компилятор заного компилирует только изменившиеся с последнего компилирования модули, а для остальных берёт уже существующие dcu, таким образом в твоём приведённом случае компиляция заключается только в проверки соответствий времени изменений pas- и dcu-файлов и последующая сборка exe.
PS. Вынеси себе кнопку Build и удивись.
{RASkov} (2008-03-16 18:39:00) [15]> [74] Dimaxx © (16.03.08 14:49)
> Мне привести весь код процедуры, занимающей сотню-другую
> строк ради двух важных?
Зачем сотню? вот смотри код из 6 строк, но с тем самым хинтом, об НЕ использовании переменной P
var P: Integer;
begin
P:=0;
P:=10+15;
Caption:=Format('Item #%d',[P]); //Но я же ее использую!!! ;)
end;
Вот и ищи в своих 100-200 строках нечто то что я тебе привел в 6... и поверь, найдешь :)
:о)
{RASkov} (2008-03-16 14:49:00) [16]> [72] Dimaxx © (16.03.08 14:44)
> Уже ничего не глючит! Ты как читаешь? :)
Я читаю нормально, а сказанное было не на текущий твой момент, а к твоему спору об "глупом компиляторе" :)
Dimaxx (2008-03-16 14:49:00) [17]
> а ты нет
Мне привести весь код процедуры, занимающей сотню-другую строк ради двух важных? Указанная мной переменная Р используется в двух строках. Вот их я и привел.
Dimaxx (2008-03-16 14:44:00) [18]
> Если глючит среда, это не значит, что виноват компилятор.
> ... Ты кинь кусок "глючного" кода, да так что бы я его мог
> у себя скомпилировать, и посмотрим будут ли глюки у моего
> компилятора...
Уже ничего не глючит! Ты как читаешь? :) Все решилось переустановкой Дельфи. Теперь код компилируется нормально.
{RASkov} (2008-03-16 14:24:00) [19]> Да черт с ним с примером из [67],
Впрочем пример немного переделаю:
function Fu(N: Byte): Byte;
begin
try
if (N=0) or (N=5) then raise Exception.Create('Zero or 5');
Result:=(10 div N)+1;
except
ShowMessage('Error');
//Result:=255;
end;
end;
case fu(5) of
0: ShowMessage('code 0');
1: ShowMessage('code 1');
2: ShowMessage('code 2');
3: ShowMessage('code 3');
255: ShowMessage('Error code');
end;
И вот если расскоментировать //Result:=255; - то все встает на свои места....)
{RASkov} (2008-03-16 14:09:00) [20]> [65] Loginov Dmitry © (16.03.08 13:40)
> И тебе он не понадобится.
Да черт с ним с примером из [67], но тыж сам говоришь, что
> В 99,9%
и ведь не отрицаешь 0,1%, вот для него и выдает варнинги компилятор...:)