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

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

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

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

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

На форме есть FormAddTextField и Command.
Проблема в том, что, при нажатии OK, когда FormAddTextField пустой, мидлет виснет.
Мой код:
var dreal
id_2integer
okcommand
    . . . 
begin 
  id_2 
:= FormAddTextField('Поле ввода'''105); 
  
ok := CreateCommand(' OK'CM_BACK1); 
  
AddCommand(OK); 
   while 
GetClickedCommand <> OK do delay(100); 
  
:= 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 
dreal
id_2integer
okcommand

begin
    ShowForm
;
    
id_2 := FormAddTextField('Поле ввода'''105); 
    
ok := CreateCommand(' OK'CM_OK1); 
    
AddCommand(ok); 
    while 
GetClickedCommand <> ok do delay(50); 
    
:= 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(s10); 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Programmer-man (29.10.2010)
Старый 29.10.2010, 22:44   #4
Programmer-man
AnyKey`щик
 
Регистрация: 06.09.2010
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Мидлет и мобильник

Большое спасибо за ответы.
Приведу полный код :
program x2;
var
  
dreal;
  
id_1id_2iinteger;
  
oknextclickedcommand;

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

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

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

    
until clicked ok;

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

    
until FormGetText(id_2) <> '';

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

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

    
ok := CreateCommand('Повтор'CM_BACK1);
    
next := CreateCommand('Вихiд'CM_SCREEN1);

    
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, время: 08:09.


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