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

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

Ошибка в delphi 7 [D7, WinXP]


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

Sicilla ©   (2004-11-17 18:34:00) 

Привет всем. Постваил себе delphi 7 взамен delphi 5. delphi 5 не удалял. И теперь ошибка: при отладке F7 например в переменной i значение 2, а кажет, что там 10 или -5. Хотя считает правильно в целом.


TButton   (2004-11-29 09:21:00) [21]


> а зачем Continue вообще нужен?
> также как и Goto и Exit его место на помойке IMHO.

+

> > Тогда уж и Break в придачу.
>
> Абсолютно точно, и break туда же.
> IMHO те кто пользуется
> Goto, Break, Continue, Exit
> просто не могут нормально реализовать логику программы.
>
> > А можно и циклы вобще выкинуть. Нафиг они нужны?
>
> не извращайте идею.
>
> C помощью 7-ми операторов можно реализовать любую логику:
> 1. пустой оператор - ;
> 2. оператор присваивания :=
> 3. Условный оператор if <> then <оператор> else <оператор>
> 4. Оператор цикла с пердусловием while <условие> do <оператор>
> 5. Оператор цикла с постусловием repeat <оператор> until
> <условие>
> 6. Оператор цикла с границами for <от> to <до> do <оператор>
> 7. Составной оператор begin <оператор>.. end.
>
> два доп. оператора case и with можно применять для красоты
> и наглядности программы.
>
> Continue, Break, Goto, Exit лишь запутывают логику программы
> и делают программу трудно читаемой.


ну тады мое имхо. имхо место ложек и вилок на помойке, поварежек, шумовок и т.п. там же. кастрюли, сковородки и чайники тоже абсолютно не нужны. имхо, те кто всем этим пользуется - не могут правильно организовать свой быт.

ведь можно обойтиси всего двумя предметами
1. глиняная миска
2. китайские палочки.


kostan   (2004-11-29 09:12:00) [22]

может не совсем в тему....
ВНИМАНИЕ!  Ошибка компилятора Delphi !
Обнаружена была давно (на сайте Borland есть ссылка)
реально НЕЛЬЗЯ использовать напрямую переменную цикла
в вычислениях!
пример:
for i:=1 to 1000 do
begin
  gg=i*i*20;
end;
выдаст не верный результат

НАДО так !! (через переменную)
for i:=1 to 1000 do
begin
  b=i
  gg=b*b*20;
end;


KSergey   (2004-11-29 07:50:00) [23]

Ну а теперь наш ответ чемберлену ;)

Ну то, что код стал более многословным - стоило ожидать. На мой взгляд - он менее прозрачен, ну да тут спорить наверное смысла нет, это уже религия. Соответственно, при усложнении сей код будет еще усложняться и все более запутываться. Хотя это опять мое мнение.

Единственный прокол, который я вижу - в цикле Repeat ф-ция IsError будет вызываться дважды для каждого элемента массива (кроме последнего). Хорошо ли это??


KSergey   (2004-11-29 07:46:00) [24]

Пишу от имени и по поручению Defunct. Текст авторский, без изменений.

KSergey ©   (24.11.04 10:22) [109]
> Так свет увидит наконец функционально полностью идентичный код тому,
что приведен в [17] и [91]???


> Gero ©   (17.11.04 23:35) [17]

> for i := 0 to High(Arr) do
>  begin
>   if IsError(Arr[i]) then Break;
>   <Код>
> end;


Для цикла while я инвертирую функцию IsError -> NoError;

i := 0;
CanGo := NoError(Arr[0]);
while CanGo do
begin
 <Код>
 inc(i);
 if i<High(Arr) then CanGo := NoError(Arr[i])
                else CanGo := False
end;


Для repeat отсавлю оригинальную IsError.

i := 0
if i<High(Arr) then
Repeat
 if not IsError(Arr[i]) then
 begin
   <Код>
 end;
 inc(i);
Until (i>=High(Arr)) or IsError(Arr[i-1]);


PS
Вот объяснения от Defunct:
меня кажется забанили из-за тов. Soft'a....
У нас с ним один IP (работаем через NAT).
Так что извините с задержкой ответа.
Можете его запостить в той ветке:


KSergey   (2004-11-28 14:11:00) [25]

> begin...end ©   (28.11.04 14:07) [113]

"...услышать..", если не ошибаюсь, было в оригинале ;)
Впрочем, не суть важно ;)


begin...end   (2004-11-28 14:07:00) [26]

> [110] KSergey ©   (25.11.04 11:10)

"Жаль, что нам так и не удалось послушать начальника транспортного цеха" (© Жванецкий).


KSergey   (2004-11-25 12:15:00) [27]

>  [111] ASoft   (25.11.04 12:03)

Это не черти что, это работа оптимизатора. Автор же рассказывает не совсем понятно о чем...


ASoft   (2004-11-25 12:03:00) [28]

Привет, Sicilla!
У меня на D7 такая хрень была, но в целом, программа работала.    Именно при проверке Step'ом переменная в цикле (for) показывала черти-что. До D7, никакой Дельфией не пользовался.
Что касается, выбирать из Break-Continue, я пользуюсь ими по мере надобности, когда считаю, что мне нужны данные операторы.
Ну и кашу заварил...:)


KSergey   (2004-11-25 11:10:00) [29]

Ну что, все, не увидим мы ответов тов. Defunct?


KSergey   (2004-11-24 10:22:00) [30]

>  [97] Defunct ©   (23.11.04 18:48)
> Помоему я уже написал, как быть в общем случае. Только вы
> приняли это решение, за не относящееся к теме:
>
> while not BreakStatus do
> begin
>  <код>;
>  <Процедура в которой рассматриваются все проблемы и условия
> пребывания>
> end;

Издеваетесь? ;)
Нельзя ли уточнить вот это:

<Процедура в которой рассматриваются все проблемы и условия пребывания>

Я прекрасно понял вашу точку зрения.
Но вы упорно делаете вот что: приводите "абстрактный код" в котором кучу проверок, которые я рисую в своем "абстрактном коде" сводите в лаконичную фразу по-русски " Процедура в которой...".
А если эту фразу написать на дельфи, а? Будет ли она столь лаконичной?

Вы упорно приводите другиеабстрактрые коды.
Я же считаю, что если код с for не выкидываяиз него обязательные(предположим, для некоего алгоритма) куски (ну нельзя без них!) переложить на вариант без break - то выйдет куда более пространный код. Можно спорить о его прозрачности, но он будет существенно более многословным!

Вот потому я и бьюсь уже который день, пытаясь вытянуть не расплывчатую фразу "вот тут все проверки", а конкретный код, безупрощений!
Неужели нельзя его написать, наконец??! Чтобы можно было все же предметно разговаривать и голосовать, а??

> А if перед стартом цикла? Вы его конечно проигнорировали.

Да нет же! Я все внимательно читал. Но согласитесь, если if вставлен внутрьцикла - то наверное не от дури, а лишь потому, что за цикл его вынести нельзя(работает с конкретным элементом массива, например). Если это было не очевидно - прошу прощения, что не уточнил.

Так свет увидит наконец функционально полностью идентичный код тому, что приведен в [17] и [91]???

ЗЫ
С одним бодался-бодался (ровно о том же) - так он жаловаться ушел... Уж извините.


begin...end   (2004-11-24 09:30:00) [31]


> [107] Defunct ©   (23.11.04 21:15)

Правильно ли я понял - ответа на вопрос, повторенный в конце [102], и приведения кода (например, с циклом repeat) без опечаток, функционально соответствующего [17], - от Вас ожидать не следует?


Defunct   (2004-11-23 21:15:00) [32]

Verg ©   (23.11.04 21:11) [106]

Дык, просто надоело выслушивать поучения от некоторых.

> Да "гонево" от тебя уже пошло тако-ое!.
В общем да...


Verg   (2004-11-23 21:11:00) [33]


> А на тебя-то что нашло? (я про [94])


Да "гонево" от тебя уже пошло тако-ое!. На самом деле непонятно стало - то ли ты издеваешься, то ли у тебя что-то с головой случилось....


Defunct   (2004-11-23 21:07:00) [34]

Verg ©   (23.11.04 20:51) [104]

Очень интересная манера донести свое мнение.

PS: А на тебя-то что нашло? (я про [94])


Verg   (2004-11-23 20:51:00) [35]


>  [103] Defunct ©   (23.11.04 20:44)


Надо б тебе валерьянки попить, или к врачу...
Ты что, выспался и решил еще понести, еще большую пургу?


Defunct   (2004-11-23 20:44:00) [36]

Verg ©   (23.11.04 20:21) [99]

Именно это я и подумал, прочитав [94].
без обид.

поясню:
В [94] вы критиковали предложение:
>> Понимаете, моей целью не было написать рабочий пример.

> Это что, типа прозрачность в ущерб работоспособности?

По вашему абстрактный пример может быть работоспособным?
Если да, тогда действительно выходит - прозрачность в ущерб работоспособности. Если нет, тогда Вы просто не поняли о чем я говорю.

> А зачем тогда if not <ошибка> then?
> Без этого if-а было бы еще прозрачнее.

Потому что мне, как автору поста, захотелось его там написать. Точно также как и Gero захотелось написать if IsError(Arr) then break.

> Давайте прозрачный нерабочий код писать и сидеть наслаждаться "крысотой"!

Давайте не будем искажать и переворачивать все вверх дном.
Используете break, хорошо, на то ваше право. Я не использую break, на то есть мое право. begin...end в мягкой форме говорит, что я пишу все программы по-ламерски раз не использую break, на то есть его право.

> Да уж Open Source отдыхает...

А это вообще не понятно к чему. Я не насколько дальновиден, чтобы увидеть связь OpenSource с оператором break и/или как-то связать с темой о циклах.


begin...end   (2004-11-23 20:41:00) [37]


> [100] Defunct ©   (23.11.04 20:30)


> Для того чтобы разбить вашу теорию, достаточно посмотреть
> на первый пост, приведенный вами в качестве аргумента -
> AP [55]. Там нет ни слова о том согласен уважаемый AP или
> не согласен с моим мнением.

Там есть выражение согласия с постом [31], поэтому прочитайте [31] внимательнее.

Но если Вы не считаете это очевидным, то пожалуйста - всё равно будет 7 против 1.


> Вас раздражает мой nick-name?

А вот здесь Вы глубоко заблуждаетесь. Меня раздражают голословные утверждения, и об этом я уже сказал в [98]. А уж кто эти самые голословные утверждения делает, а уж тем более, какой nick-name у того, кто их делает - мне абсолютно всё равно. Может быть, просто так получается, что Вы их делаете чаще, чем другие?

А Вы всё же, пожалуйста, ответьте на вопрос, заданный в [98]: "ГДЕ в этой ветке Вы показали, что без Break ошибки лучше видны?". Если можете ответить, конечно.


Verg   (2004-11-23 20:32:00) [38]


> 100] Defunct ©   (23.11.04 20:30)


Советую спать ночами, а не насиловать организм....


Defunct   (2004-11-23 20:30:00) [39]

> И ещё - посмотрите, сколько человек согласно / не согласно (как я понял)с Вашим мнением о том, что "без break ошибки лучше видны".

Ключевая фраза здесь - (как я понял).
Я и не смневался, что вы можете сказать, что все в этой ветке против моего мнения.
Для того чтобы разбить вашу теорию, достаточно посмотреть на первый пост, приведенный вами в качестве аргумента - AP [55]. Там нет ни слова о том согласен уважаемый AP или не согласен с моим мнением. Следовательно, дальше рассматривать приведенный Вами список даже нет смысла.

Мне очень интересно, какова цель ваших "атак"? Причем не только в этой ветке. Вас раздражает мой nick-name?


Verg   (2004-11-23 20:21:00) [40]


> [97] Defunct ©   (23.11.04 18:48)


> Verg ©   (23.11.04 09:50) [94]
> не уподобляйтейсь begin...end.


Не бредонось. Чес-слово, иногда такое несешь, что аж стыдно за наше поколение.....

"Следи за собой, будь осторожен" (С) Кино.


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

Наверх

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