|
Основной форум Сюда все проблемы связанные с программированием. |
20.10.2009, 01:02
|
#1
|
AnyKey`щик
Регистрация: 20.10.2009
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Помощь новичку
Здраствуйте. Я только сел за мидлет паскаль. Подскажите пожалуйста как в переменную записать число вводимое с клавишь?
|
(Offline)
|
|
20.10.2009, 01:45
|
#2
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Ответ: Помощь новичку
В хэлпе всё расписано с примерами. Пример оттуда:
Либо через текстбокс:
var cont : command;
quote : string;
begin
showTextBox('Enter message, '', 200, TF_ANY);
cont := createCommand('Send', CM_SCREEN, 1);
addCommand(cont);
repeat
delay(100);
until getClickedCommand <> emptyCommand;
quote := getTextBoxString;
...
end.
Либо через текстовое поле:
var gauge_id, value: integer;
begin
text_id :=FormAddTextField('Enter your name', 'Mr.Smith', 20, TF_ANY);
ShowForm;
value := FormGetValue(text_id);
Delay(2000);
end.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.10.2009, 10:20
|
#3
|
AnyKey`щик
Регистрация: 20.10.2009
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помощь новичку
блин...мало что понятно =(
может кто поможет написать прогу?
она должна вычислять число по формуле, данные должны вводиться с клавиатуры
вот формула: X:=a1*b2*c3+a2*b3*c1+a3*b1*c2-a3*b1*c3-a1*b3*c2
|
(Offline)
|
|
20.10.2009, 12:49
|
#4
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Ответ: Помощь новичку
Создавай столько текстбоксов, сколько у тебя переменных, не считая x. Добавляй на форму, потом считывай и считай x.
Если что-то конкретное не получается - можно спросить, так и разберёшься)
|
(Offline)
|
|
20.10.2009, 17:42
|
#5
|
AnyKey`щик
Регистрация: 20.10.2009
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помощь новичку
var cont : command; quote : string; begin showTextBox('Enter message, '', 200, TF_ANY); cont := createCommand('Send', CM_SCREEN, 1); addCommand(cont); repeat delay(100); until getClickedCommand <> emptyCommand; quote := getTextBoxString; ... end.
вот не понимаю куда здесь будет записываться числа?
|
(Offline)
|
|
20.10.2009, 17:53
|
#6
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Ответ: Помощь новичку
Строка будет писаться в переменную quote. Если подразумевается ввод только целых чисел, то TF_ANY можно заменить на более подходящий вариант, не забыв и про типы переменных.
|
(Offline)
|
|
20.10.2009, 19:18
|
#7
|
AnyKey`щик
Регистрация: 20.10.2009
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помощь новичку
program Raschet; var a1, a2, a3, b1, b2, b3, c1, c2, c3, X : Integer; Result : string; cmdNext, cmdexit : command; begin showForm;//показываем форму //создаём элементы управления a1 := FormAddTextField('a1=', '', 20, TF_NUMERIC); a2 := FormAddTextField('a2=', '', 20, TF_NUMERIC); a3 := FormAddTextField('a3=', '', 20, TF_NUMERIC); b1 := FormAddTextField('b1=', '', 20, TF_NUMERIC); b2 := FormAddTextField('b2=', '', 20, TF_NUMERIC); b3 := FormAddTextField('b3=', '', 20, TF_NUMERIC); c1 := FormAddTextField('c1=', '', 20, TF_NUMERIC); c2 := FormAddTextField('c2=', '', 20, TF_NUMERIC); c3 := FormAddTextField('c3=', '', 20, TF_NUMERIC); //создаём команду(кнопку) cmdNext := createCommand('Next', CM_OK, 1); AddCommand(cmdNext); repeat until GetClickedCommand = cmdNext; //берём текст, введёный пользователем X:=a1*b2*c3+a2*b3*c1+a3*b1*c2-a3*b1*c3-a1*b3*c2; Result := FormGetText(X); //выводим информацию на дисплей ShowTextBox('Ответ:',Result , 200, TF_NUMERIC); cmdExit := CreateCommand('Exit', CM_EXIT, 1); AddCommand(cmdExit); repeat delay(100); until GetClickedCommand = cmdExit; end.
вот что я написал, но оно ничего не выводит...в чем проблема?
|
(Offline)
|
|
20.10.2009, 19:26
|
#8
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Ответ: Помощь новичку
Строку с formgettext убрать. Не ясно вообще зачем она здесь.
А showtextbox вызывать так:
ShowTextBox('Ответ:',''+X , 200, TF_NUMERIC);
Но кроме всего этого в формуле x надо использовать не ссылки на поля ввода(a1,a2 и т.д.), а данные из этих полей, которые можно получить функцией FormGetText
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.10.2009, 20:20
|
#9
|
AnyKey`щик
Регистрация: 20.10.2009
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помощь новичку
program Raschet; var a1, a2, a3, b1, b2, b3, c1, c2, c3, X, a1i, a2i, a3i, b1i, b2i, b3i, c1i, c2i, c3i : real; cmdNext, cmdexit : command; begin showForm;//показываем форму //создаём элементы управления a1 := FormAddTextField('a1=', '', 20, TF_NUMERIC); a2 := FormAddTextField('a2=', '', 20, TF_NUMERIC); a3 := FormAddTextField('a3=', '', 20, TF_NUMERIC); b1 := FormAddTextField('b1=', '', 20, TF_NUMERIC); b2 := FormAddTextField('b2=', '', 20, TF_NUMERIC); b3 := FormAddTextField('b3=', '', 20, TF_NUMERIC); c1 := FormAddTextField('c1=', '', 20, TF_NUMERIC); c2 := FormAddTextField('c2=', '', 20, TF_NUMERIC); c3 := FormAddTextField('c3=', '', 20, TF_NUMERIC); //создаём команду(кнопку) cmdNext := createCommand('Next', CM_OK, 1); AddCommand(cmdNext); repeat until GetClickedCommand = cmdNext; //берём текст, введёный пользователем a1i:=FormGetText(a1); a2i:=FormGetText(a2); a3i:=FormGetText(a3); b1i:=FormGetText(b1); b2i:=FormGetText(b2); b3i:=FormGetText(b3); c1i:=FormGetText(c1); c2i:=FormGetText(c2); c3i:=FormGetText(c3); X:=a1i*b2i*c3i+a2i*b3i*c1i+a3i*b1i*c2i-a3i*b1i*c3i-a1i*b3i*c2i; ShowTextBox('Ответ:',''+X , 200, TF_NUMERIC); cmdExit := CreateCommand('Exit', CM_EXIT, 1); AddCommand(cmdExit); repeat delay(100); until GetClickedCommand = cmdExit; end.
добавил FormGetTextы, но при компиляции пишет "ошибка в параметре 1" в строках с FormGetTextами
|
(Offline)
|
|
20.10.2009, 20:23
|
#10
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Ответ: Помощь новичку
Внимательнее читай документацию. Идентификаторы на текстовые поля должны быть целыми, а не типа real.
|
(Offline)
|
|
20.10.2009, 20:23
|
#11
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Помощь новичку
Идентификаторы a1, a2 и т.д. должны быть типа integer. Дальше по идентификатору нужно получить строку с помощью FormGetText, а потом уже преобразовать ее в действительное число с помощью StringToReal.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.10.2009, 20:52
|
#12
|
AnyKey`щик
Регистрация: 20.10.2009
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помощь новичку
program Raschet; var a1, a2, a3, b1, b2, b3, c1, c2, c3:integer; a1i, a2i, a3i, b1i, b2i, b3i, c1i, c2i, c3i : string; a1o, a2o, a3o, b1o, b2o, b3o, c1o, c2o, c3o, X:real; cmdNext, cmdexit : command; begin showForm; a1 := FormAddTextField('a1=', '', 20, TF_NUMERIC); a2 := FormAddTextField('a2=', '', 20, TF_NUMERIC); a3 := FormAddTextField('a3=', '', 20, TF_NUMERIC); b1 := FormAddTextField('b1=', '', 20, TF_NUMERIC); b2 := FormAddTextField('b2=', '', 20, TF_NUMERIC); b3 := FormAddTextField('b3=', '', 20, TF_NUMERIC); c1 := FormAddTextField('c1=', '', 20, TF_NUMERIC); c2 := FormAddTextField('c2=', '', 20, TF_NUMERIC); c3 := FormAddTextField('c3=', '', 20, TF_NUMERIC); cmdNext := createCommand('Next', CM_OK, 1); AddCommand(cmdNext); repeat until GetClickedCommand = cmdNext; a1i:=FormGetText(a1); a2i:=FormGetText(a2); a3i:=FormGetText(a3); b1i:=FormGetText(b1); b2i:=FormGetText(b2); b3i:=FormGetText(b3); c1i:=FormGetText(c1); c2i:=FormGetText(c2); c3i:=FormGetText(c3); a1o:=StringToReal(a1i); a2o:=StringToReal(a2i); a3o:=StringToReal(a3i); b1o:=StringToReal(b1i); b2o:=StringToReal(b2i); b3o:=StringToReal(b3i); c1o:=StringToReal(c1i); c2o:=StringToReal(c2i); c3o:=StringToReal(c3i); X:=a1o*b2o*c3o+a2o*b3o*c1o+a3o*b1o*c2o-a3o*b1o*c3o-a1o*b3o*c2o; ShowTextBox('Ответ:',''+X , 200, TF_NUMERIC); cmdExit := CreateCommand('Exit', CM_EXIT, 1); AddCommand(cmdExit); repeat delay(100); until GetClickedCommand = cmdExit; end.
добавил StringToReal стало писать 'параметров слишком мало', что это значит??
|
(Offline)
|
|
20.10.2009, 21:08
|
#13
|
AnyKey`щик
Регистрация: 20.10.2009
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помощь новичку
решил ту проблему: вместо StringToReal, писал StringToInteger
теперь новая проблема, перестала работать кнопка Next...до этого работала нормально, ничего не менял, а теперь хз что случилось...
|
(Offline)
|
|
20.10.2009, 21:21
|
#14
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Ответ: Помощь новичку
После repeat первого вставляй задержку. delay(100); , например. Чтобы не перегружать процессор бесконечным циклом без пауз.
|
(Offline)
|
|
20.10.2009, 21:36
|
#15
|
AnyKey`щик
Регистрация: 20.10.2009
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помощь новичку
ага, помогло, но только для эмулятора, на мобиле все равно не работает...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:08.
|