Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Компилятор пропускает команду... [Delphi, Windows]


Страницы:   1 2 3 4 5

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%, вот для него и выдает варнинги компилятор...:)


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо