Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1123
от 16.04.2008, 18:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 445, Экспертов: 52
В номере:Вопросов: 4, Ответов: 9

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 131545: Здравствуйте, пишу задачу: На форме расположены кнопки игра 1 и игра 2 для запуска игр Пользователь пытается угадать число задуманное компьютером в диапазоне от 1 до 20 ведется подсчет количества попыток в первой игре есть пользовател...
Вопрос № 131637: Добрый день, уважаемые эксперты. Помогите решить проблему. Создаю библиотеку с формой, и консольное приложение для вызова этой формы. При запуске форма вызывается, а при закрытии происходит ошибка, как устранить?...
Вопрос № 131670: Здравствуйте, пишу задачу: создано две формы - форма для ввода пароля и форма пользовательского приложения на главной форме расположена метка с текстом введите пароль в течение 15 секунд поле для ввода пароля кнопка ок и таймер для отсчета<br...
Вопрос № 131682: Здравствуйте эксперты, пишу программу: на форме три рисунка, три блохи, метка с текстом "ходы", метка для вывода количества ходов, фигура в центре формы - прямоугольник, символизирующая финиш, таймер и кнопка старт, после нажатия на кот...

Вопрос № 131.545
Здравствуйте, пишу задачу:
На форме расположены кнопки игра 1 и игра 2 для запуска игр
Пользователь пытается угадать число задуманное компьютером в диапазоне от 1 до 20
ведется подсчет количества попыток
в первой игре есть пользователь не угадал число то ему сообщается только то что он не угадал и запрашивается новое число

Во второй игре при неправильном ответе пользователю дается подсказка в виде сообщения о том что загаданное число больше или меньше введенного числа

Код вроде правильный, только программа работает неправильно: при игре два пишу в строке число 9, пишет, что число больше введенного, пишу 10, программа пишет, что число меньше введенного.
Подскажите как правильно написать
Код в приложении

Приложение:

Отправлен: 10.04.2008, 18:14
Вопрос задал: Исаак Моисеевич (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Бава Александр Викторович
Здравствуйте, Исаак Моисеевич!
Вообще-то, меня смущает один момент!
В процедуре 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
Что это означает?

Приложение:

Отправлен: 11.04.2008, 11:44
Вопрос задал: Исаак Моисеевич (статус: 3-ий класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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 начинает расширяться просто
Что тут нужно дополнить?
Отправлен: 11.04.2008, 13:39
Вопрос задал: Исаак Моисеевич (статус: 3-ий класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 18)

Отвечает: SHERRY
!!!
Здравствуйте, Исаак Моисеевич!
Width - это свойство ширины объекта. Вам нужно свойство Left:

image1.WidthLeft:=image1.left+5;

Внимательнее нужно быть!
-----
∙ Отредактировал: Устинов С.Е. (Профессионал)
∙ Дата редактирования: 11.04.2008, 15:21

---------
Самурай без меча подобен самураю с мечём, только без меча..
Ответ отправил: 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


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.91 pre 5.0 RC1 от 13.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное