|
Основной форум Сюда все проблемы связанные с программированием. |
05.09.2006, 22:05
|
#1
|
Оператор ЭВМ
Регистрация: 05.09.2006
Сообщений: 29
Написано 0 полезных сообщений (для 0 пользователей)
|
Помогите найти ошибку!
Здравствуйте, народ
Помогите, пожалуйста. Пробую вот МидлетПаскаль, хотел сочинить себе программку, вроде телепрограммы. Ну, може не программу в полном смысле слова, а этакую напоминалку о фильмах. Сначала заставка, потом по нажатию клавиши она пропадает, появляется список дней недели. Из списка дней в список телеканалов, оттуда собственно к списку фильмов. Ну и переходы есть соответственно в обратном направлении. Несколько дней бьюсь, ничего не выходит, хотя вроде и все понятно. Вот такая вот маленькая программка:
program Menu;
procedure splash; Forward;
procedure selday; Forward;
procedure selchan; Forward;
procedure viewprog; Forward;
var poned, vtorn, sreda, itemch, ichan, itemprog, ifilm1, ifilm2,
channel1, channel2, channel3: integer;
exit, tochan, today, toprog: command;
schan : Array[0..11] of String;
iprnum: Array[0..11] of Integer;
// Заставка с картинкой
procedure splash;
begin
DrawImage(LoadImage('/splash2.png'), 0, 0);
Repaint;
ShowCanvas;
while GetKeyPressed = KE_NONE do
begin
Delay(100);
end;
selday;
end;
// Выбор дня недели
procedure selday;
begin
ShowForm;
ShowMenu('TV programm', CH_IMPLICIT);
poned:= MenuAppendString('Pon, 04.09.06');
vtorn:= MenuAppendString('Vto, 05.09.06');
sreda:= MenuAppendString('Sre, 05.09.06');
tochan := CreateCommand('Channels', CM_SCREEN, 2);
exit:= CreateCommand('ExitProg', CM_EXIT, 1);
AddCommand(tochan);
AddCommand(exit);
repeat
until (GetClickedCommand = tochan) or (GetClickedCommand = exit);
selchan;
end;
// Выбор телеканала
procedure selchan;
begin
//ClearForm;
//ShowForm;
itemch := FormAddChoice('', CH_MULTIPLE);
channel1:= ChoiceAppendString(itemch, 'Channel1');
channel2:= ChoiceAppendString(itemch, 'Channel2');
channel3:= ChoiceAppendString(itemch, 'Channel3');
today := CreateCommand('Week', CM_SCREEN, 2);
toprog := CreateCommand('Programm', CM_SCREEN, 2);
AddCommand(today);
AddCommand(toprog);
SetFormTitle('Channels');
repeat
until (GetClickedCommand = today) or (GetClickedCommand = toprog);
if (GetClickedCommand = today) then selday;
if (GetClickedCommand = toprog) then viewprog;
end;
procedure viewprog;
begin
//ClearForm;
//ShowForm;
itemprog := FormAddChoice('', CH_MULTIPLE);
ifilm1:= ChoiceAppendString(itemprog, ‘film1’);
ifilm2:= ChoiceAppendString(itemprog, ‘film2’);
ifilm3:= ChoiceAppendString(itemprog, ‘film3’);
SetFormTitle('Programm');
tochan := CreateCommand('Channels', CM_SCREEN, 1);
AddCommand(tochan);
repeat
until (GetClickedCommand = tochan);
selchan;
end;
begin
// Вызов заставки
splash;
//----------
end.
|
(Offline)
|
|
07.09.2006, 16:13
|
#2
|
Оператор ЭВМ
Регистрация: 05.09.2006
Сообщений: 29
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Помогите найти ошибку!
Вроде локализовал свою проблему. Добавляем две команды меню, запускающие соответствующие процедуры, в бесконечном цикле ждем команды... Выполняется только первая команда, вторая никогда. Если IF'ы поменять местами, будет выполняться только selday. Ничего не понимаю
iii:=0;
repeat
if (GetClickedCommand = toprog) then begin
PlayAlertSound;
viewprog;
end;
if (GetClickedCommand = today) then begin
PlayAlertSound;
selday;
end;
Delay(100);
until iii=1;
Сталкивался кто-нибудь с такими проблемами?
|
(Offline)
|
|
08.09.2006, 01:22
|
#3
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Re: Помогите найти ошибку!
key := GetClickedCommand;
if(key = toprog) then ....
if(key = today) then ...
|
(Offline)
|
|
08.09.2006, 02:51
|
#4
|
Оператор ЭВМ
Регистрация: 05.09.2006
Сообщений: 29
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Помогите найти ошибку!
Ага, спасибо, как-то не додумался. Попробуем. Код клавиши, похоже, успевает между строчками переприсвоится
Еще забавный момент, который пока не очень доставет - реакция на нажатия клавиш (хотел вместо меню сделать управление джойстиком). В режиме канвы все отлавливается на ура, в режиме формы сплошные косяки.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:28.
|