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=7920)

7ion. 04.03.2009 04:39

Что у меня неверно?
 
Вчера начал кодить на Мидлет Паскале. Поэтому не ржать :) Вот почему тут ошибка, понять немогу:
Код:

    if userName <> 't9ote48te' Or kotName <> '7ion' then
вот в этой строке. Переменные объявлены так и до этого все идет так:
Код:

  var okCommand:command;
      nameField:integer;
      kotField, label_id:integer;
      userName:string;
      kotName:string;
      cm : command;
  begin 
    okCommand := createCommand('Далее', CM_OK, 1);
    showForm;
    addCommand(okCommand);
    setTicker('Simple Antivirus');
    label_id := formAddString('Cracked by 7ion. Введенный ключ и имя оставьте в покое и жмите далее ;)'); 
    kotField := formAddTextField('Введите имя', '7ion', 20, TF_ANY);
    nameField := formAddTextField('Введите лицензионный ключ', 't9ote48te', 20, TF_ANY);
    userName := formGetText(nameField);
    kotName := formGetText(kotField);
    if userName <> 't9ote48te' Or kotName <> '7ion' then

и еще - что в этой строке
Код:

    kotField := formAddTextField('Введите имя', '7ion', 20, TF_ANY);
означает TF_ANY и что еще туда можно подставить? заранее спасибо.

ViNT 04.03.2009 23:39

Ответ: Что у меня неверно?
 
В первом случае, скорее всего дело в том, что не расставлены скобки,
должно быть
PHP код:

if (userName <> 't9ote48te') Or (kotName <> '7ion'then 

На счет TF_ANY - читаем хелп (раздел "Forms"), TF_ANY означает, что можно вводить любые символы, есть еще
· TF_EMAIL - для email адреса
· TF_NUMERIC - только для чисел
· TF_PHONENUMBER - для телефонного номера
· TF_URL - только символы, допустимые в URL
· TF_PASSWORD - выводит "*" вместо текста

И в случае ошибок настоятельно рекомендую писать не только где ошибка, но и какая.

7ion. 05.03.2009 01:39

Ответ: Что у меня неверно?
 
спасибо большое за помощь, все заработало. но теперь новая проблема. при выборе "О программе" хотелось бы видеть бегущую с надписью о программе. но меня почему-то заместо этого выкидывает из эмулятора. что могло случится? или он выполняет команду меню "Выход"? помогите пожалуйста.
PHP код:

showMenu('Simple Antivirus 2009'CH_IMPLICIT);
    
about := menuAppendStringImage('О программе'loadImage('/exit.png'));
    exit := 
menuAppendStringImage('Выход'loadImage('/exit.png')); 
    
okCommand2 := createCommand('Выбор'CM_OK1);
    
addCommand(okCommand2); 
     while (
getClickedCommand <> okCommand2) do 
      
delay(100);
      
showForm;
    if 
menuGetSelectedIndex about then
    begin
    setTicker
('О программе');
    
end
    
if menuGetSelectedIndex = exit then halt;
  
end


ViNT 05.03.2009 01:49

Ответ: Что у меня неверно?
 
Конечно выкидывает, так и надо. После проверки условия
if menuGetSelectedIndex = exit then halt; сразу попадаем на end, поток завершается. Надо делать что-то в роде этого после SetTicker:
PHP код:

//В разделе var
clicked,cmdOK:Command;

//после setticker
cmdOk:=CreateCommand('OK',CM_OK,1);
addCommand(cmdOK);
repeat
 clicked
:=getClickedCommand;
 
delay(100);
until clicked=cmdOK

Примерно так, тогда выйдет только при нажатии команды ОК.

7ion. 05.03.2009 02:25

Ответ: Что у меня неверно?
 
здорово) я как то сам не подумал что оно-то выполняется, но просто сразу завершается. кстати, чтобы ждать нажатие кнопки юзаю более простую конструкцию:
PHP код:

cmdOk:=CreateCommand('OK',CM_OK,1); 
    
addCommand(cmdOK); 
    
repeat  
    delay
(100); 
    
until getClickedCommand <> emptyCommand

но вот опять вопрос :) как работать с Goto? я слышал что нужно поставить якорь
PHP код:

yakor

где надо, а когда надо на него перейти, то написать
PHP код:

Goto yakor 

Заюзал эту конструкцию в попытке перейти с кнопки на меню
PHP код:

ty:
    
showMenu('Simple Antivirus 2009'CH_IMPLICIT);
    
about := menuAppendStringImage('О программе'loadImage('/exit.png'));
    exit := 
menuAppendStringImage('Выход'loadImage('/exit.png')); 
    
okCommand2 := createCommand('Выбор'CM_OK1);
    
addCommand(okCommand2); 
     while (
getClickedCommand <> okCommand2) do 
      
delay(100);
      
showForm;
    if 
menuGetSelectedIndex about then
    begin
    clearForm
;
    
setTicker('О программе');
    
cmdOk:=CreateCommand('OK',CM_OK,1); 
    
addCommand(cmdOK); 
    
repeat  
    delay
(100); 
    
until getClickedCommand <> emptyCommand;
    GoTo 
ty 
    end
    
if menuGetSelectedIndex = exit then halt;
  
end

но компилятор не понимает ty:
Почему?

ViNT 05.03.2009 13:12

Ответ: Что у меня неверно?
 
В MP нету меток, там много чего нет, что есть в паскале.
Советую просто прочитать помощь - абсолютно все стандартные функции и возможности там описаны, кое-что еще добавлено через библиотеки, но ограничений по сравнению с паскалем очень много.

7ion. 05.03.2009 14:58

Ответ: Что у меня неверно?
 
Я читал. И мне кажется что именно там я про ГоТо и читал, но нем могу найти где :dontknow:
А как тогда по нажатию кнопки "Ок", мне вернутся в меню? и еще - как мне сделать прогресс-бар? или это тоже нельзя на мидлетпаскале? На мобайлбарсике видел, такое делают...

Olaola 05.03.2009 19:23

Ответ: Что у меня неверно?
 
Тут нет ссылок, эт не бейсик!
тут ф-и и процедуры)))

ViNT 05.03.2009 19:47

Ответ: Что у меня неверно?
 
Цитата:

Сообщение от 7ion. (Сообщение 99615)
Я читал. И мне кажется что именно там я про ГоТо и читал, но нем могу найти где :dontknow:
А как тогда по нажатию кнопки "Ок", мне вернутся в меню? и еще - как мне сделать прогресс-бар? или это тоже нельзя на мидлетпаскале? На мобайлбарсике видел, такое делают...

Goto в MP нет точно.
Возвращение можно организовать с помощью циклов и условий.

Прогрессбар есть в режиме формы, назывется Gauge, добавляется с помощью FormAddGauge, позиция меняется с помощью FormSetValue.

7ion. 06.03.2009 01:38

Ответ: Что у меня неверно?
 
вах. ну это градусник как бы. а на графическом экране, как в МБ, нельзя его сделать? как загрузка там всякая. а то тогда получается что МП оч урезан :(

odd 07.03.2009 02:17

Ответ: Что у меня неверно?
 
Вот простейшая процедура рисования полоски прогресса.
Полоска рисуется внизу экрана. При n = 0 рисуется рамка вокруг полоски, последующие значения - проценты выполнения. Пример взят из исходного кода SHD.
PHP код:

procedure OnLoad(ninteger);
begin
    
if n=0
    then
        begin
            SetColor
(0,0,0); FillRect(1,GetHeight-7,GetWidth-2,6); SetColor(192,192,192); DrawRect(1,GetHeight-7,GetWidth-3,5); Repaint;
        
end;
    else
        
begin
            FillRect
(3,GetHeight-5,(GetWidth-5)*n/100,2); Repaint;
        
end;
end


7ion. 07.03.2009 03:12

Ответ: Что у меня неверно?
 
Спасибище огромное! Вопросов больше нет. Пока нет :)


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

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