 |
Основной форум Сюда все проблемы связанные с программированием. |
29.10.2010, 15:17
|
#1
|
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
|
Мастер
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.10.2010, 20:08
|
#3
|
Модератор
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.10.2010, 22:44
|
#4
|
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
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Форма ввода данных и команда
Для начала попробуй MIDP 2.0 поставить. Так как у тебя используются числа с плавающей запятой, а их в MIDP 1.0 не было.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.10.2010, 13:50
|
#6
|
AnyKey`щик
Регистрация: 06.09.2010
Сообщений: 6
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Форма ввода данных и команда
MIDP 2.0 тоже виснет.
На других мобильниках все оk. С сименсом не дружит.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:03.
|