Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 29.10.2010, 15:17   #1
Programmer-man
AnyKey`щик
 
Регистрация: 06.09.2010
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Радость Форма ввода данных и команда

На форме есть FormAddTextField и Command.
Проблема в том, что, при нажатии OK, когда FormAddTextField пустой, мидлет виснет.
Мой код:
var d: real; 
id_2: integer; 
ok: command; 
    . . . 
begin 
  id_2 
:= FormAddTextField('Поле ввода', '', 10, 5); 
  
ok := CreateCommand(' OK', CM_BACK, 1); 
  
AddCommand(OK); 
   while 
GetClickedCommand <> OK do delay(100); 
  
d := StringToReal(FormGetText(id_2), 10);
end; 
Как решить проблему? Заранее благодарен!
(Offline)
 
Ответить с цитированием
Старый 29.10.2010, 19:12   #2
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Форма ввода данных и команда

У меня всё нормально работает. Может проблема не в этом?

Program stars;
var 
d: real; 
id_2: integer; 
ok: command; 

begin
    ShowForm
;
    
id_2 := FormAddTextField('Поле ввода', '', 10, 5); 
    
ok := CreateCommand(' OK', CM_OK, 1); 
    
AddCommand(ok); 
    while 
GetClickedCommand <> ok do delay(50); 
    
d := StringToReal(FormGetText(id_2), 10);
end. 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Programmer-man (29.10.2010)
Старый 29.10.2010, 20:08   #3
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Форма ввода данных и команда

Так он и должен виснуть
Когда поле пустое, он пытается преобразовать пустую строку в число и обламывается.
Нужно
d := StringToReal(FormGetText(id_2), 10);
заменить на
S:=FormGetText(id_2);
if 
s<>'' then 
 d
:=StringToReal(s, 10); 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Programmer-man (29.10.2010)
Старый 29.10.2010, 22:44   #4
Programmer-man
AnyKey`щик
 
Регистрация: 06.09.2010
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Мидлет и мобильник

Большое спасибо за ответы.
Приведу полный код :
program x2;
var
  
d: real;
  
id_1, id_2, i: integer;
  
ok, next, clicked: command;

begin
  ShowForm
;
  
repeat
    ok 
:= CreateCommand('  %', CM_BACK, 1);
    
next := CreateCommand('Далi', CM_SCREEN, 1);
    
d := 0;
    
repeat
      ClearForm
;
      
i := FormAddString('Час: ' + trunc(d / 100) + '.' + trunc(frac(d / 100) *100) + ' хв. ');
      
id_1 := FormAddTextField('Кiлькiсть, шт.', '', 10, 5);
      
id_2 := FormAddTextField('Норма, хв.', '', 10, 5);

      
AddCommand(ok);
      
AddCommand(next);
      
repeat clicked := GetClickedCommand;
        
delay(100);
      
until clicked <> EmptyCommand;

      if (
FormGetText(id_1) <> '') and (FormGetText(id_2) <> '') then
        d 
:= d + StringToReal(FormGetText(id_1), 10) * StringToReal(FormGetText(id_2), 10);

    
until clicked = ok;

    
repeat
      ClearForm
;
      
id_2 := FormAddTextField('Продуктивний час, хв.', '470', 10, 5);
      
AddCommand(OK);
          
      while 
GetClickedCommand <> OK do delay(100);

    
until FormGetText(id_2) <> '';

    
d := d / StringToReal(FormGetText(id_2), 10);

    
ClearForm;
    
i := FormAddString('Ваш результат: ' + trunc(d) + '.' + trunc(frac(d) * 100) + '%');

    
ok := CreateCommand('Повтор', CM_BACK, 1);
    
next := CreateCommand('Вихiд', CM_SCREEN, 1);

    
AddCommand(ok);
    
AddCommand(next);
    
repeat clicked := GetClickedCommand;
      
delay(100);
    
until clicked <> EmptyCommand;
  
until clicked = next;
end. 
На эмуляторе идет нормально, но на телефоне виснет в процессе выполнения. (siemens c65)
MIDlet type = Classic MIDlet
MIDP version = MIDP1.0
Как приучить телефон к мидлету?
(Offline)
 
Ответить с цитированием
Старый 29.10.2010, 23:45   #5
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Форма ввода данных и команда

Для начала попробуй MIDP 2.0 поставить. Так как у тебя используются числа с плавающей запятой, а их в MIDP 1.0 не было.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Programmer-man (30.10.2010)
Старый 30.10.2010, 13:50   #6
Programmer-man
AnyKey`щик
 
Регистрация: 06.09.2010
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Вопрос Ответ: Форма ввода данных и команда

MIDP 2.0 тоже виснет.
На других мобильниках все оk. С сименсом не дружит.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com