Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 05.09.2006, 22:05   #1
archerix
Оператор ЭВМ
 
Регистрация: 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
archerix
Оператор ЭВМ
 
Регистрация: 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
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Re: Помогите найти ошибку!

key := GetClickedCommand;
if(key = toprog) then ....
if(key = today) then ...
(Offline)
 
Ответить с цитированием
Старый 08.09.2006, 02:51   #4
archerix
Оператор ЭВМ
 
Регистрация: 05.09.2006
Сообщений: 29
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Помогите найти ошибку!

Ага, спасибо, как-то не додумался. Попробуем. Код клавиши, похоже, успевает между строчками переприсвоится

Еще забавный момент, который пока не очень доставет - реакция на нажатия клавиш (хотел вместо меню сделать управление джойстиком). В режиме канвы все отлавливается на ура, в режиме формы сплошные косяки.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти книгу Nuprahtor Болтовня 1 27.09.2009 15:03
Помогите найти код! beloff Основной форум 3 18.12.2007 13:47
Помогите найти. Черный крыс Blitz3D 8 14.12.2007 05:14
Помогите найти BlitzBasic for PC NeutralD 2D-программирование 6 16.01.2007 13:17


Часовой пояс GMT +4, время: 01:09.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com