forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Помогите найти ошибку! (http://forum.boolean.name/showthread.php?t=1442)

archerix 05.09.2006 22:05

Помогите найти ошибку!
 
Здравствуйте, народ
Помогите, пожалуйста. Пробую вот МидлетПаскаль, хотел сочинить себе программку, вроде телепрограммы. Ну, може не программу в полном смысле слова, а этакую напоминалку о фильмах. Сначала заставка, потом по нажатию клавиши она пропадает, появляется список дней недели. Из списка дней в список телеканалов, оттуда собственно к списку фильмов. Ну и переходы есть соответственно в обратном направлении. Несколько дней бьюсь, ничего не выходит, хотя вроде и все понятно. Вот такая вот маленькая программка:

Код:


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.



archerix 07.09.2006 16:13

Re: Помогите найти ошибку!
 
Вроде локализовал свою проблему. Добавляем две команды меню, запускающие соответствующие процедуры, в бесконечном цикле ждем команды... Выполняется только первая команда, вторая никогда. Если IF'ы поменять местами, будет выполняться только selday. Ничего не понимаю :wallbash:

Код:


iii:=0;
repeat
if (GetClickedCommand = toprog) then begin
                                      PlayAlertSound;
                                      viewprog;
                                      end;
if (GetClickedCommand = today) then  begin
                                      PlayAlertSound;
                                      selday; 
                                      end;               
Delay(100);
until iii=1;

Сталкивался кто-нибудь с такими проблемами?

Piligrim 08.09.2006 01:22

Re: Помогите найти ошибку!
 
key := GetClickedCommand;
if(key = toprog) then ....
if(key = today) then ...

archerix 08.09.2006 02:51

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

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


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot