forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Форма ввода данных и команда (http://forum.boolean.name/showthread.php?t=13612)

Programmer-man 29.10.2010 15:17

Форма ввода данных и команда
 
На форме есть FormAddTextField и Command.
Проблема в том, что, при нажатии OK, когда FormAddTextField пустой, мидлет виснет.
Мой код:
PHP код:

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

Как решить проблему? Заранее благодарен!

odd 29.10.2010 19:12

Ответ: Форма ввода данных и команда
 
У меня всё нормально работает. Может проблема не в этом?

PHP код:

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


ViNT 29.10.2010 20:08

Ответ: Форма ввода данных и команда
 
Так он и должен виснуть :)
Когда поле пустое, он пытается преобразовать пустую строку в число и обламывается.
Нужно
d := StringToReal(FormGetText(id_2), 10);
заменить на
PHP код:

S:=FormGetText(id_2);
if 
s<>'' then 
 d
:=StringToReal(s10); 


Programmer-man 29.10.2010 22:44

Мидлет и мобильник
 
Большое спасибо за ответы.
Приведу полный код :
PHP код:

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
Как приучить телефон к мидлету?

odd 29.10.2010 23:45

Ответ: Форма ввода данных и команда
 
Для начала попробуй MIDP 2.0 поставить. Так как у тебя используются числа с плавающей запятой, а их в MIDP 1.0 не было.

Programmer-man 30.10.2010 13:50

Ответ: Форма ввода данных и команда
 
MIDP 2.0 тоже виснет.:"(
На других мобильниках все оk. С сименсом не дружит.


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

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