MIDlet Pascal 3.11.2015 / 21:11 | | ВитаминКО Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| RblSb, в смысле "зачем"? У меня есть код: 100 a$="trulala"
200 print a$
300 print a$+a$
400 goto 200
В паскале он бы выглядел так: program bulala;
label
m1;
var
a: string;
begin
m1:
a:="trulala";
println (a);
println (a+a);
goto m1;
end.
А как в мидлете сделать? Процедуры пробовал, но у меня начинается рекурсия, и в конце-концов ломается обработка пунктов меню, а затем и логика мидлета. __________________
わからない!! |
4.11.2015 / 01:00 | | Kalter Пользователь Сейчас: Offline
Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
| ЕМНИП, никак. mp3ide подсвечивает goto, но сам компилятор в него не могёт. А именно в данном случае goto образовывает бесконечный цикл, который в MIDlet Pascal реализовывается с помощью while true или repeat + until false / forever . Понимаю что это не ответ, но я не припоминаю случаев, когда приходилось бы использовать безальтернативное goto.
__________________
Homo homini penis est. |
4.11.2015 / 03:56 | | ВитаминКО Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| Kalter, случай я выше написал. Если подпрограмму в бейсике можно написать в виде процедуры/функции, то вот такой код я хз как
__________________
わからない!! |
4.11.2015 / 05:38 | | RblSb Пользователь Сейчас: Offline
Регистрация: 25.07.2011
| ВитаминКО, случай выше можно реализовать циклом. И раз уж ты не можешь нормально ответить, зачем тебе гото, то скажу сразу - бейсик слишком хорош, чтобы его код реализовался в етих ваших паскалях и жабах |
4.11.2015 / 13:31 | | 19Ram84 Пользователь Сейчас: Offline
Регистрация: 30.08.2015
| Эх добавили бы ещё, интерпритатор применяемый на стадии разработки, было бы ваще супер |
4.11.2015 / 14:06 | | ВитаминКО Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| RblSb, окей, тот код можно в цикле А как такой? 100 MENU1%=SELECT ("Меню 1", "Пункт 1.1", "Пункт 1.2", "Пункт 1.3")
200 IF MENU1%=0 THEN GOTO 600
300 IF MENU1%=1 THEN GOTO 1100
400 IF MENU1%=2 THEN GOTO 1500
500 GOTO 100
600 MENU2%=SELECT ("Меню 2", "Пункт 2.1", "Пункт 2.2", "Пункт 2.3")
700 IF MENU2%=0 THEN GOTO 5000
800 IF MENU2%=1 THEN GOTO 8000
900 IF MENU2%=2 THEN GOTO 100
1000 GOTO 600
1100 MENU3%=SELECT ("Меню 3", "Пункт 3.1", "Пункт 3.2")
1200 IF MENU3%=0 THEN GOTO 3000
1300 IF MENU3%=1 THEN GOTO 3500
1400 GOTO 1100
1500 MENU4%=SELECT ("Меню 4", "Пункт 4.1", "Пункт 4.2")
1600 IF MENU4%=0 THEN GOTO 100
1700 IF MENU4%=1 THEN GOTO 1900
1800 GOTO 1500
Это, конечно, тривиальный пример, но так устроена навигация в моббейсике, если используются меню. В мидлетпаскале я без циклов делал все, на процедурах, но, как-то не так, что ли.. При компиляции начинается рекурсия и, если все собралось, то либо в течении какого-то времени начинает тормозить до полного отказа переходить по пунктам, либо не запускается. В общем, нужен пример навигации, как выше, только на этом паскале Вот код на паскале, который на данный момент Показать бiдлокод Показать бiдлокод procedure MenuHero;
var
i: integer;
begin
showMenu(HERO, CH_IMPLICIT);
for i := 0 to 4 do
begin
arItem[i] := menuAppendString(arHero[i]);
end;
addCommand(cmdGo);
repeat
delay(100);
cmdClick := getClickedCommand;
until cmdClick = cmdGo;
iHero := menuGetSelectedIndex;
if iHero = 0 then
MenuHarakter;
if iHero = 1 then
MenuOdezhka;
if iHero = 2 then
MenuResy;
if iHero = 3 then
MenuSleepBag;
if iHero = 4 then
MenuGorod;
end;
Это можно как-то улучшить? __________________
わからない!! |
5.11.2015 / 17:51 | | ВитаминКО Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| 19Ram84, и получился бы такой же "тяжеловесный" бейсик Здесь суть как раз в компиляции. В общем, ясно, либо всем до лампочки на мою просьбу, либо реально никто не знает, как правильно сделать __________________
わからない!! |
5.11.2015 / 18:53 | | RblSb Пользователь Сейчас: Offline
Регистрация: 25.07.2011
| ВитаминКО, нужно програмно анализировать бейсиковый код так, чтобы анализатор понимал, как разделить код на функции и где еще вставить циклы. Любой ли код можно так преобразовать - хз. Уже все это давно обсуждали, используй поиск.
|
5.11.2015 / 21:28 | | ВитаминКО Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| RblSb, гугол говорит мне, что в таком случае можно Goto использовать, но суть как раз в том, что его дефолтно нету именно в мидлетпаскале.
Ладно, буду упрощать код, может, получится что. Понимаю, что проще сразу на яве написать, там то попроще будет, но мне принципиально надо именно на мп это сделать. Спасибо.
__________________
わからない!! |
6.11.2015 / 00:23 | | 19Ram84 Пользователь Сейчас: Offline
Регистрация: 30.08.2015
| Думаю не получился бы, как бейсик Так как бейсик применяет интепритатор, и в самом собранном мидлете. А мп применял бы его только на уровне написания кода, а затем компилит его в класс файл. Просто писать код на угад, может только уже профи. Для новичков же писать на угад не очень Напишет код, а он вдруг кривой выйдет, а сотни раз превефицировать и опять пихать в архив, нервы сдадут Я понимаю что конечно интерпритатор добавить тяжело, но его наличие даст мп 100 очков перед мб, и тысячи юзверей мб, скажут тебе спасибо Простой пример, когда мы перед установкой ос, тестим её б виртуалбоксе, мы же задумываемся о скорости? Также и здесь на стадии наоисания смотрим как работает код(мы же не будем на нём работать) а затем собираем в мидлет, где скорость уже будет другая. Изменено 19Ram84 (6.11 / 00:31) (всего 1 раз) |
Всего сообщений: 1594 Фильтровать сообщения Поиск по теме Файлы топика (72)
|