 |
11.10.2010, 02:10
|
#1
|
AnyKey`щик
Регистрация: 09.10.2010
Сообщений: 16
Написано одно полезное сообщение
|
Исправьте код пожалуйста

Program Ded
function mainmenu(n:integer):integer;
var cmsms, setings,help, exit,langs,balans,help,about,updates ,stat,popolnenie,balans: integer;
play,back, clicked : 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_OK, 1);
addCommand(play);
clicked:=EmptyCommand;
repeat
delay(200);
clicked := getClickedCommand;
until clicked <> EmptyCommand;
mainmenu:=menuGetSelectedIndex;
RemoveCommand(play);
if menuGetSelectedIndex = exit then begin saveStore; halt; end;
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>''
|
(Offline)
|
|
11.10.2010, 15:39
|
#2
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Исправьте код пожалуйста
всё читать лень, но сразу скажу, что в конце должна быть точка, а не точка с запятой
|
(Offline)
|
|
04.11.2010, 13:28
|
#3
|
Оператор ЭВМ
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
|
Ответ: Исправьте код пожалуйста
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; - кажись, синтаксис не соблюден.
Всё, что нашел,но ошибок может быть и больше.
|
(Offline)
|
|
11.12.2010, 21:08
|
#4
|
Оператор ЭВМ
Регистрация: 08.12.2010
Адрес: Белорусь
Сообщений: 25
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Исправьте код пожалуйста
Чтобы не плодить новых тем, позволю себе воспользоваться этой, ведь суть вопроса та же.
Набросал код, но он работает не так как задумывалось.
Почему-то если выбрать пункт меню, то соответствующая процедура текст не выводит. Если процедуру вызвать до вывода меню, то текст отображаеться. Видно какая-то мелочь, но никак не могу разобраться...

program BusList;
uses font32;
var
ok, clicked: command;
w, h, key: integer;
procedure cls2;
begin
setColor(255, 255, 255);
fillRect(0, 0, w, h);
delay(200)
end;
procedure ShowList(s: string);
var
htext : integer;
begin
textwindow(2, 2, w-2, h-12);
htext := format(s, 0);
cls2;
drawtextwindow;
repaint;
delay(2000);
end;
procedure ShowFirstMenu;
var
p1, p2 : integer;
exit, next, clicked ,cmdQuit: command;
begin
ShowMenu('Выберите остановку', CH_IMPLICIT);
p1 := MenuAppendString('Halt');
p2 := MenuAppendString('Вывести текст');
next := CreateCommand('Далее', CM_SCREEN, 0);
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;
h := getHeight;
font32.init(1);
font(0);
loadfont('Verdana_7');
// Если выводить текст до вывода меню, то все впорядке.
// ShowList('Test test test test test test test test');
ShowFirstMenu;
end.
Последний раз редактировалось fall, 11.12.2010 в 22:55.
Причина: Исправил код
|
(Offline)
|
|
11.12.2010, 22:46
|
#5
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Исправьте код пожалуйста
Убери ShowCanvas; из процедуры ShowFirstMenu;
|
(Offline)
|
|
11.12.2010, 23:01
|
#6
|
Оператор ЭВМ
Регистрация: 08.12.2010
Адрес: Белорусь
Сообщений: 25
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Исправьте код пожалуйста
Неа, не помогло (код в своем посте также обновил).
Если убрать ClearForm то даже после выбора пункта, меню продолжает находиться на экране и нормально функционировать. Текст не выводиться.
Может нужно как-то уничтожать меню перед выводом текста?..
Прикрепил архив с проектом к посту.
UPD:
Сообщение от odd
Убери ShowCanvas; из процедуры ShowFirstMenu;
|
Безрезультатно.
|
(Offline)
|
|
12.12.2010, 10:08
|
#7
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Исправьте код пожалуйста
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.12.2010, 10:37
|
#8
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Исправьте код пожалуйста
fall, выведи в дебаг заходит ли прога в нужный IF вообще.
|
(Offline)
|
|
12.12.2010, 12:46
|
#9
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Исправьте код пожалуйста
Переделай
if MenuGetSelectedIndex = p2 then ShowList('Test test test test test test test test');
на
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.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.12.2010, 13:51
|
#10
|
Оператор ЭВМ
Регистрация: 08.12.2010
Адрес: Белорусь
Сообщений: 25
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Исправьте код пожалуйста
Nex, я так безнадежен?
odd, спасибо, работает!
Да и мне кажется, что нужно писать if MenuGetSelectedIndex = 0 или if MenuGetSelectedIndex = 1, а не сравнивать их с p1 или p2.
|
Пример брал из мануалки "MPhelp_by_odd.chm" 
|
(Offline)
|
|
13.12.2010, 17:22
|
#11
|
Оператор ЭВМ
Регистрация: 08.12.2010
Адрес: Белорусь
Сообщений: 25
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Исправьте код пожалуйста
А как обработать нажатие центральной кнопки (которая между стрелок)?
|
(Offline)
|
|
14.12.2010, 12:33
|
#12
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Исправьте код пожалуйста
key:=keytoaction(getkeypressed);
if key=GA_FIRE then MeaninglessProcedure1;
|
(Offline)
|
|
13.04.2011, 10:59
|
#13
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Исправьте код пожалуйста
Сообщение от Rameron
3) exit нельзя использовать как название переменной - оно зарезервировано.
|
Хм, я использовал для своих проектов Exit:boolean, все норм. 
|
(Offline)
|
|
29.04.2012, 18:49
|
#14
|
Оператор ЭВМ
Регистрация: 06.03.2009
Сообщений: 38
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Исправьте код пожалуйста
Ребята мне сейчас самому понадобилась функция выбора элемента но блин из за кучи нагромождений пока искал и правил потратил 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.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:40.
|