forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   MidletPascal (http://forum.boolean.name/forumdisplay.php?f=46)
-   -   Исправьте код пожалуйста (http://forum.boolean.name/showthread.php?t=13472)

sk13 11.10.2010 02:10

Исправьте код пожалуйста
 
PHP код:

Program Ded
function mainmenu(n:integer):integer;
var 
cmsmssetings,help, exit,langs,balans,help,about,updates ,stat,popolnenie,balansinteger;  
    
play,backclicked command
    
Begin
showMenu
('Главное меню'CH_IMPLICIT);//главное меню



cmsms:= menuAppendStringimage('Отправить смс',imA[1]);
stat:=menuAppendStringimage('Статус сообщения',imA[2]);
balans:=menuAppendStringimage('Баланс кода',imA[3]);
setings := menuAppendStringimage('Прикольные СМСки',imA[4]);  
popolnenie:=menuAppendStringimage('Приобрести код',imA[5]);
help := menuAppendStringimage('Справка',imA[6]);      
about:=  menuAppendStringimage('О программе',imA[7]); 
updates:=menuAppendStringimage('Обновление',imA[8]); 
exit :=  
menuAppendStringimage('Выход',imA[9]); 

ui.list_set_selected(n);    
 
  
play := createCommand('Выбрать'CM_OK1);  
    
addCommand(play);
    
     
clicked:=EmptyCommand;
    
repeat  
        delay
(200);  
        
clicked := getClickedCommand;  
    
until clicked <> EmptyCommand;  
        
mainmenu:=menuGetSelectedIndex;        
    
    
RemoveCommand(play);
            
  
    if 
menuGetSelectedIndex = exit then begin saveStorehaltend;
    if 
menuGetSelectedIndex updates then  update;
      if 
menuGetSelectedIndex cmsms then   sendSMS;
    if 
menuGetSelectedIndex setings then   PROCcoolsms;
    if 
menuGetSelectedIndex balans then  balansForm;
    if 
menuGetSelectedIndex stat then  checksmsid;// проверка статуса
                
    
if menuGetSelectedIndex popolnenie then  checkcantpay;
    
    if 
menuGetSelectedIndex help then  showhelp;
    if 
menuGetSelectedIndex about then  showabout;        
    
end

Пишет ошибку: 'unexpected token '<EOF>''

cherepets 11.10.2010 15:39

Ответ: Исправьте код пожалуйста
 
всё читать лень, но сразу скажу, что в конце должна быть точка, а не точка с запятой

Rameron 04.11.2010 13:28

Ответ: Исправьте код пожалуйста
 
1) В начале после Program Ded должна стоять ;
2) function mainmenu(n:integer):integer; - смысл строки?
3) exit нельзя использовать как название переменной - оно зарезервировано.
4) Массив imA[] не объявлен.
5) ui.list_set_selected(n); - n, я так понял, переменная, но ты её не объявил
6) if menuGetSelectedIndex = exit then begin saveStore; halt; end; - кажись, синтаксис не соблюден.
Всё, что нашел,но ошибок может быть и больше.

fall 11.12.2010 21:08

Ответ: Исправьте код пожалуйста
 
Чтобы не плодить новых тем, позволю себе воспользоваться этой, ведь суть вопроса та же.

Набросал код, но он работает не так как задумывалось.
Почему-то если выбрать пункт меню, то соответствующая процедура текст не выводит. Если процедуру вызвать до вывода меню, то текст отображаеться. Видно какая-то мелочь, но никак не могу разобраться...

PHP код:

program BusList;

uses font32;

var
  
okclickedcommand
  
whkeyinteger;  
   


   

procedure cls2;
begin
  setColor
(255255255);
  
fillRect(00wh);
  
delay(200)
end;


   
   
procedure ShowList(sstring);
var
  
htext integer;
begin 

  textwindow
(22w-2h-12); 
  
htext := format(s0);
  
cls2;
  
drawtextwindow;
  
  
repaint;
  
delay(2000);
end;


  
  
procedure ShowFirstMenu;
var 
    
p1p2 integer
  exit, 
nextclicked ,cmdQuitcommand;  
  
begin 

  ShowMenu
('Выберите остановку'CH_IMPLICIT); 
     
  
p1   := MenuAppendString('Halt'); 
  
p2   := MenuAppendString('Вывести текст'); 
    
  
next := CreateCommand('Далее'CM_SCREEN0); 
  
AddCommand(next); 
    
  
ShowCanvas;   
  
  
repeat 
    delay
(100); 
    
clicked := GetClickedCommand
  
until clicked <> EmptyCommand;  
 
  
ClearForm
  
  if 
clicked next then begin
        
if MenuGetSelectedIndex p1 then halt
    if 
MenuGetSelectedIndex p2 then ShowList('Test test test test test test test test');  
  
end;
 
end;




begin

  w 
:= getWidth;
  
:= getHeight;
  
  
font32.init(1);
  
font(0);
  
loadfont('Verdana_7'); 

// Если выводить текст до вывода меню, то все впорядке.
// ShowList('Test test test test test test test test');  

  
ShowFirstMenu;  

  
end


odd 11.12.2010 22:46

Ответ: Исправьте код пожалуйста
 
Убери ShowCanvas; из процедуры ShowFirstMenu;

fall 11.12.2010 23:01

Ответ: Исправьте код пожалуйста
 
Вложений: 1
Неа, не помогло (код в своем посте также обновил).
Если убрать ClearForm то даже после выбора пункта, меню продолжает находиться на экране и нормально функционировать. Текст не выводиться.
Может нужно как-то уничтожать меню перед выводом текста?..
Прикрепил архив с проектом к посту.

UPD:
Цитата:

Сообщение от odd (Сообщение 171648)
Убери ShowCanvas; из процедуры ShowFirstMenu;

Безрезультатно.

Nex 12.12.2010 10:08

Ответ: Исправьте код пожалуйста
 
Ctrl+A -> Delete

Жека 12.12.2010 10:37

Ответ: Исправьте код пожалуйста
 
fall, выведи в дебаг заходит ли прога в нужный IF вообще.

odd 12.12.2010 12:46

Ответ: Исправьте код пожалуйста
 
Переделай
PHP код:

if MenuGetSelectedIndex p2 then ShowList('Test test test test test test test test'); 

на
PHP код:

if MenuGetSelectedIndex p2 then
begin
ShowCanvas
;
ShowList('Test test test test test test test test');
Repaint;
Delay(5000);
end

Да и мне кажется, что нужно писать if MenuGetSelectedIndex = 0 или if MenuGetSelectedIndex = 1, а не сравнивать их с p1 или p2.

fall 12.12.2010 13:51

Ответ: Исправьте код пожалуйста
 
Nex, я так безнадежен? :)
odd, спасибо, работает!
Цитата:

Да и мне кажется, что нужно писать if MenuGetSelectedIndex = 0 или if MenuGetSelectedIndex = 1, а не сравнивать их с p1 или p2.
Пример брал из мануалки "MPhelp_by_odd.chm";)

fall 13.12.2010 17:22

Ответ: Исправьте код пожалуйста
 
А как обработать нажатие центральной кнопки (которая между стрелок)?

cherepets 14.12.2010 12:33

Ответ: Исправьте код пожалуйста
 
key:=keytoaction(getkeypressed);
if key=GA_FIRE then MeaninglessProcedure1;

PassCall 13.04.2011 10:59

Ответ: Исправьте код пожалуйста
 
Цитата:

Сообщение от Rameron (Сообщение 167026)
3) exit нельзя использовать как название переменной - оно зарезервировано.

Хм, я использовал для своих проектов Exit:boolean, все норм.:dontknow:

Deport 29.04.2012 18:49

Ответ: Исправьте код пожалуйста
 
Ребята мне сейчас самому понадобилась функция выбора элемента но блин из за кучи нагромождений пока искал и правил потратил 15минут.... вот решил сделать маленький тестер кому надо делать меню
program BusList;
var
p1,p2:integer;
next,clicked:command;
begin

ShowMenu('Выберите диапазон', CH_IMPLICIT);
p1 := MenuAppendString('Нулевой');
p2 := MenuAppendString('Первый');
next := CreateCommand('Далее', CM_SCREEN, 0);
AddCommand(next);
repeat delay(100);clicked := GetClickedCommand;until clicked <> EmptyCommand;


if MenuGetSelectedIndex = p1 then begin

//ВАШ КОД ПОД ВЫБРАННЫМ ПЕРВЫМ ЭЛЕМЕНТОМ
end;
if MenuGetSelectedIndex = p2 then begin

//ВАШ КОД ПОД ВЫБРАННЫМ ВТОРЫМ ЭЛЕМЕНТОМ
end;
end.


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

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