IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Порядок выполнения команд, какие же строки кода выполняются в дэльфе?
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Имеется следующий фрагмент кода на кнопке:

Код
procedure TForm1.Button2Click(Sender: TObject);
begin

if flag=1 then
  begin
    flag:=0;
    button2.Caption := 'Начать игру';
    kredit:=0;
  end;

if flag=0 then
  begin
    flag:=1;{игра началась}
    button2.Caption := 'Остановить';
    kredit:=100;
  end;
Label1.Caption := 'Кредит: '+IntToStr(kredit);
end;

end.


Задумывалось так: изначально при старте флаг сброшен. При нажатии на кнопку "типа игра пошла", флаг устанавливается, выводится текст, инициализируются переменные. При повторном нажатии (значение флага-то сменилось и по идее дельфя должна проигнорировать условие if flag=0, а на if flag=1 обратить внимание) флаг сбрасывается и выводятся сообщения.

Что-то слабо верится в то, что пример корректно работает.
:(
Считал, что дэльфя выполняет строки одна за другой, т.е.:
Код
if flag=1 then действие1
if flag=2 then действие2
if flag=3 then действие3
if flag=n then действие n


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


В реальности выполняется тока первая команда, а как быть с остальным содержимым проверочного блока?. Блин, даже на асме такого глюка нет.
:)))
Смех-смехом, а курсовик надо как-то сделать, жаль что прогу нельзя сдать на асме.
:(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


во-первых, что за странная конструкция?
if flag=0 then

это условие будет выполняться всегда? (flag может быть равен только 0 или 1?)

Что получается у тебя:
заходим в процедуру. flag=1
идем в соотв. условие.
делаем
flag:=0;

как думаешь, что после этого произойдет на
if flag=0 then
?

если не хочешь такого, вместо 2 if-ов делай if... then ... else...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(nonpascaler @ 9.01.2007 20:33) *

Имеется следующий фрагмент кода на кнопке:

Вот ты молодец..
Если flag=1, то пишется "Начать игру", сбрасывается flag в 0 и следующие условие (if flag=0) тоже выполняется ! Поставь между условиями else.

Цитата
Блин, даже на асме такого глюка нет.
smile.gif))

nea.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Цитата(мисс_граффити @ 9.01.2007 21:19) *

....делаем
flag:=0;

как думаешь, что после этого произойдет на
if flag=0 then
?


А-ха-ха-ха! Дошло!!!
:)))
В самом деле, по условию, он выполнил код и пошел далее неся свежие даные.
заменил на ELSE все ок!, спасибы.

После бэйсика и ассемблера не так просто перейти в паскаль. Скорее всего из-за того, что в обоих языках (хоть и разных) присутствует своеобразная конструкция GoTo, а в паскале нужно поток программы представить как-то иначе, чем и хочу заняться.

Насчет асма имел в виду примерно следующее:
Код
LD H,2;допустим, где-то регистр "Н" схватил двойку
...
LD A,H;подгружаем в аккумулятор для проверки
CP 1;сравнить со значением 1
JR Z,metka1; если равняется единице, то идем в направлении МЕТКА1
CP 2;ну и так далее
JR Z,metka2
CP 3
JR Z,metka3
JP metka;полностью перейти куда-нибудь


Полагаю Вам это все и так понятно, асм простой язык. Искал в паскале этот переход и потому заволновался.
:)

Всем спасибо.
(жду не дождусь своих 20Мб для скачивания "DRKB" :)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


в паскале есть GoTo. Другое дело, что использование его стараются свести к минимуму...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
(жду не дождусь своих 20Мб для скачивания "DRKB" smile.gif


А почему 20, у меня только 10. Или вышла новая версия?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата(Bokul @ 10.01.2007 2:37) *

А почему 20, у меня только 10. Или вышла новая версия?

Нет. Идет набор статей в ДРКБ 3.
С оф. сайта.
Цитата
Последняя версия DRKB 2.3 (2005 год). Размер файла: ~10 Мб. Формат chm.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Цитата(мисс_граффити @ 10.01.2007 1:20) *
в паскале есть GoTo...

Сначала ГоуТу поставил, потом разобрался с текстом и убрал (и без него работает:)
Если в асме используется своеобразное GoTo вместо применения макрокоманд, то код выполняется быстрее, но для сегодняшних мощностей этого видимо не отследить, на 80286 может и заметно.
(с паскалем отвыкнешь тут от экономии байтов и подсчета тактов :)))

Цитата
А почему 20, у меня только 10. Или вышла новая версия?

Нет, это админ нам столько выдает, с просьбой ни в чем себе не отказывать.
:)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.05.2021 13:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name