![]() |
Прежде чем задать вопрос, смотрите 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... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
nonpascaler |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 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" :) |
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 22:23 |