Вопрос № 131545: Здравствуйте, пишу задачу:
На форме расположены кнопки игра 1 и игра 2 для запуска игр
Пользователь пытается угадать число задуманное компьютером в диапазоне от 1 до 20
ведется подсчет количества попыток
в первой игре есть пользовател...Вопрос № 131637: Добрый день, уважаемые эксперты. Помогите решить проблему.
Создаю библиотеку с формой, и консольное приложение для вызова этой формы. При запуске форма вызывается, а при закрытии происходит ошибка, как устранить?...Вопрос № 131670: Здравствуйте, пишу задачу:
создано две формы - форма для ввода пароля и форма пользовательского приложения
на главной форме расположена метка с текстом введите пароль в течение 15 секунд поле для ввода пароля кнопка ок и таймер для отсчета<br...Вопрос № 131682: Здравствуйте эксперты, пишу программу:
на форме три рисунка, три блохи, метка с текстом "ходы", метка для вывода количества ходов, фигура в центре формы - прямоугольник, символизирующая финиш, таймер и кнопка старт, после нажатия на кот...
Вопрос № 131.545
Здравствуйте, пишу задачу:
На форме расположены кнопки игра 1 и игра 2 для запуска игр
Пользователь пытается угадать число задуманное компьютером в диапазоне от 1 до 20
ведется подсчет количества попыток
в первой игре есть пользователь не угадал число то ему сообщается только то что он не угадал и запрашивается новое число
Во второй игре при неправильном ответе пользователю дается подсказка в виде сообщения о том что загаданное число больше или меньше введенного числа
Код вроде правильный, только программа работает неправильно: при игре два пишу в строке число 9, пишет, что число больше введенного, пишу 10, программа пишет, что число меньше введенного.
Подскажите как правильно написать
Код в приложении
Отвечает: Бава Александр Викторович
Здравствуйте, Исаак Моисеевич!
Вообще-то, меня смущает один момент!
В процедуре TForm1.Button2Click есть одна строчечка...
a:=random(20);
Это говорит отом, что каждый раз когда нажимается кнонопка "Игра 2"
число меняется, а не сохнаняется! :)
Вот мой вариант:
if B=True then begin
Randomize;
A:=Random(20);
B:=False;
End;
if Edit1.Text>inttostr(a) then
label1.Caption:='Загадонное числобольше введённого';
if Edit1.text<inttostr(a) then
label1.caption:='загаданное число мньше введённого';
if Edit1.text=inttostr(a) then
Begin
label1.caption:=Правильно!';
B:=True;
end:
procedure TForm1.FormCreate(Sender: TObject);
begin
B:=True
end;
А также в процедуре
Ответ отправил: Бава Александр Викторович (статус: 1-ый класс)
Ответ отправлен: 10.04.2008, 19:00 Оценка за ответ: 5 Комментарий оценки: Тот же результат с этим кодом: procedure TForm1.Button1Click(Sender: TObject); begin if B=True then begin randomize; a:=random(20); end; if StrToIntDef(edit1.Text,0)<>a then label1.caption:=íåïðàâèëüíî else label1.caption:=ïðàâèëüíî; end;
procedure
TForm1.Button2Click(Sender: TObject); begin if B=True then begin Randomize; A:=Random(20); B:=False; End; if Edit1.Text>inttostr(a) then label1.Caption:=Çàãàäàííîå ÷èñëî áîëüøå ââåä¸ííîãî; if Edit1.textlabel1.caption:=çàã
4;äàííîå ÷èñëî ìåíüøå ââåä¸ííî
Вопрос № 131.637
Добрый день, уважаемые эксперты. Помогите решить проблему.
Создаю библиотеку с формой, и консольное приложение для вызова этой формы. При запуске форма вызывается, а при закрытии происходит ошибка, как устранить?
Приложение:
Отправлен: 11.04.2008, 08:41
Вопрос задал: василий1 (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: PavelGM
Здравствуйте, василий1!
Убрать sharemem из DLL и приложения и перейти на ShortString в параметрах вместо String. ShareMem с консольными приложениями похоже плохо работает (а может и вообще не запускается как надо).
function ShowFormInDLL(Name :shortstring): TModalResult; external 'dll.dll';
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 11.04.2008, 10:41 Оценка за ответ: 5 Комментарий оценки: Спасибо! Проблему как рукой сняло))
Вопрос № 131.670
Здравствуйте, пишу задачу:
создано две формы - форма для ввода пароля и форма пользовательского приложения
на главной форме расположена метка с текстом введите пароль в течение 15 секунд поле для ввода пароля кнопка ок и таймер для отсчета
Если пользователь вводит верный пароль то появляется диалоговое окно с приветствием а затем на весь экран разворачивается форма приложения на которой размещена метка с каким-либо текстом
при закрытии этой формы завершается работа приложения
при неправильном вводе пароля выводится соответствующее сообщение и приложение закрывается
Все понятно, только не знаю как сделать, чтобы таймер отсчитывал 15 секунд и по происшествию 15 секунд происходило событие.
Еще (код в приложении) я хочу, чтобы после события Application.MessageBox('Пароль правильный'); происходило событие form2.show, а компилятор на это пишет: End Expected but Else found
Что это означает?
Отвечает: Zubex
Здравствуйте, Исаак Моисеевич!
Напишите следующим образом:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text='1' then
begin
Application.MessageBox('Пароль правильный');
form2.show;
end
else
label1.caption:='пароль неправильный';
end;
Удачи!
--------- Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 8-ой класс)
Ответ отправлен: 11.04.2008, 11:56 Оценка за ответ: 5 Комментарий оценки: Так получается, спасибо
Отвечает: Бава Александр Викторович
Здравствуйте, Исаак Моисеевич!
Для того чтобы таймер отсчитывал 15 секунд, в
TForm1.FormCreate допиши следующий код:
Timer1.Interval:=15000;
Timer1.Enabled:=True;
Ответ отправил: Бава Александр Викторович (статус: 1-ый класс)
Ответ отправлен: 11.04.2008, 12:12 Оценка за ответ: 4
Отвечает: Mishell
Здравствуйте, Исаак Моисеевич!
про отсчет 15 секунд - см. в приложении
Приложение:
Ответ отправил: Mishell (статус: 10-ый класс)
Ответ отправлен: 11.04.2008, 12:20 Оценка за ответ: 5 Комментарий оценки: Спасибо, все правильно, работает
Отвечает: Genia007
Здравствуйте, Исаак Моисеевич!
Чтобы отсчитать 15 секунд нужно сделать следующее:
var s: Word;
s:= 15;
по таймеру пишем:
procedure TForm1.Timer3Timer(Sender: TObject);
begin
Dec(s);
Label1.Caption:= IntToStr(s) + 'сек';
If s = 0 then
begin
делаем что нужно
end;
end;
По поводу кода в приложении
procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text='1' then Application.MessageBox('Пароль правильный'); form2.show else label1.caption:='пароль неправильный'; end;
ВЫ забыли поставить операторные скобки begin end, что Вам и пишет дэлфи End Expected but Else found, дословно означает "ожидается End, но найдено Else", правильный код вот:
procedure TForm1.Button19Click(Sender: TObject);
begin
if Edit2.Text='1' then
begin
ShowMessage('Пароль правильный');
form2.show;
end
else
label1.caption:='пароль неправильный';
end;
Ответ отправил: Genia007 (статус: Студент)
Ответ отправлен: 11.04.2008, 17:31 Оценка за ответ: 5
Вопрос № 131.682
Здравствуйте эксперты, пишу программу:
на форме три рисунка, три блохи, метка с текстом "ходы", метка для вывода количества ходов, фигура в центре формы - прямоугольник, символизирующая финиш, таймер и кнопка старт, после нажатия на которую включается таймер и рисунки начинают случайным образом перемещаться по форме по горизонтали с учетом подсчета ходов. Как только все рисунки окажутся в правой части формы,игра заканчивается, при повторном нажатии старт блохи возвращаются на исходную позицию.
Не получается сделать, чтобы рисунки двигались, я пишут вот что:
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
image1.Width:=image1.Width+5;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
image1.Width:=image1.Width+5;
end;
И Image1 начинает расширяться просто
Что тут нужно дополнить?
Отвечает: SHERRY !!! Здравствуйте, Исаак Моисеевич! Width - это свойство ширины объекта. Вам нужно свойство Left:
image1.WidthLeft:=image1.left+5;
--------- Самурай без меча подобен самураю с мечём, только без меча..
Ответ отправил: SHERRY (статус: 9-ый класс)
Ответ отправлен: 11.04.2008, 13:49 Оценка за ответ: 5
Отвечает: Raptor3
Здравствуйте, Исаак Моисеевич!
Все правильно - width - это ширина - каждый раз когда срабатывает таймер - увеличивается ширина image
Нужно брать свойства left (в приведенной коде меняем width на left и будет все ок)
--------- Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете
Ответ отправил: Raptor3 (статус: 7-ой класс)
Ответ отправлен: 11.04.2008, 13:50 Оценка за ответ: 5 Комментарий оценки: точно :(
Отвечает: Genia007
Здравствуйте, Исаак Моисеевич!
Оператор image1.Width:=image1.Width+5; увеличивает ширину картинки, а не её положение на форме, для движения нужно писать:
Image1.Left:= Image1.Left + 5;{Для движения по горизонтали}
Image1.Top:= Image1.Top + 5;{Для движения по вертикали}
Ответ отправил: Genia007 (статус: Студент)
Ответ отправлен: 11.04.2008, 17:32 Оценка за ответ: 5