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