|
Основной форум Сюда все проблемы связанные с программированием. |
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, время: 20:06.
|