![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
nonpascaler |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
Имеется следующий фрагмент кода на кнопке:
Код 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 В реальности выполняется тока первая команда, а как быть с остальным содержимым проверочного блока?. Блин, даже на асме такого глюка нет. :))) Смех-смехом, а курсовик надо как-то сделать, жаль что прогу нельзя сдать на асме. :( |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
во-первых, что за странная конструкция?
if flag=0 then это условие будет выполняться всегда? (flag может быть равен только 0 или 1?) Что получается у тебя: заходим в процедуру. flag=1 идем в соотв. условие. делаем flag:=0; как думаешь, что после этого произойдет на if flag=0 then? если не хочешь такого, вместо 2 if-ов делай if... then ... else... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
nonpascaler |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
....делаем 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" :) |
мисс_граффити |
![]()
Сообщение
#5
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
в паскале есть GoTo. Другое дело, что использование его стараются свести к минимуму...
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Bokul |
![]()
Сообщение
#6
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата (жду не дождусь своих 20Мб для скачивания "DRKB" ![]() А почему 20, у меня только 10. Или вышла новая версия? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Ozzя |
![]()
Сообщение
#7
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
nonpascaler |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
в паскале есть GoTo... Сначала ГоуТу поставил, потом разобрался с текстом и убрал (и без него работает:) Если в асме используется своеобразное GoTo вместо применения макрокоманд, то код выполняется быстрее, но для сегодняшних мощностей этого видимо не отследить, на 80286 может и заметно. (с паскалем отвыкнешь тут от экономии байтов и подсчета тактов :))) Цитата А почему 20, у меня только 10. Или вышла новая версия? Нет, это админ нам столько выдает, с просьбой ни в чем себе не отказывать. :) |
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 10:10 |