|
Основной форум Сюда все проблемы связанные с программированием. |
20.11.2007, 20:33
|
#1
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
не могу понять в чем прикол
Написал MIDlet, на всех эмуляторах запускается. На телефоне - фиг. На Сименсе выдает какую-то фигню, а на Nokia вообще недопустимое приложение
program rulon;
var dsID,hsID,d1sID,stringID: integer;
i, n: integer;
hi,di,d,d1,l,h,r,d1i:real;
cmdNext,cmdQuit: command;
begin
ShowForm;
dsID:=FormAddTextField('Введите диаметр рулона в мм', '', 4, TF_NUMERIC);
hsID:=FormAddTextField('Введите толщину материала в мкм', '', 4, TF_NUMERIC);
d1sID:=FormAddTextField('Введите диаметр держателя в мм', '', 10, TF_NUMERIC);
cmdNext := CreateCommand('Считать', CM_OK, 1);
AddCommand(cmdNext);
repeat until GetClickedCommand = cmdNext;
ShowCanvas;
di:=StringToInteger(FormGetText(dsID));
d:=di/1000;
hi:=StringToInteger(FormGetText(hsID));
h:=hi/1000000;
d1i:=StringToInteger(FormGetText(d1sID));
d1:=d1i/1000;
n:=trunc((d-d1)/(2*h));
l:=0;
r:=d1+h;
for i:=1 to n do
begin
l:=l+3.14*r;
r:=r+h;
end;
l:=l*100;
l:=trunc(l);
l:=l/100;
DrawText('Длина: '+l,0,0);
repaint;
cmdQuit := CreateCommand('Выход', CM_EXIT, 1);
AddCommand(cmdQuit);
repeat until GetClickedCommand = cmdQuit;
end.
|
(Offline)
|
|
20.11.2007, 21:02
|
#2
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Re: не могу понять в чем прикол
А ты на Samsung или на SonyEricsson пробовал?
Ну а к делу :
я с MIDlet'ом не расбираюсь.
пересмотри код может где-то что-то перепутал.
|
(Offline)
|
|
20.11.2007, 21:04
|
#3
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Re: не могу понять в чем прикол
Смотрю,напоминает Pascal!!!
|
(Offline)
|
|
20.11.2007, 21:15
|
#4
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
Это и есть Паскаль. Ты название форума видел?
|
(Offline)
|
|
20.11.2007, 21:26
|
#5
|
Знающий
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение (для 2 участников)
|
Re: не могу понять в чем прикол
var dsID,hsID,d1sID,stringID: integer;
i, n: integer;
hi,di,d,d1,l,h,r,d1i:real;
cmdNext,cmdQuit: command;
|
А не много ли ты переменныых объявил?
Может памяти не хватает?
|
(Offline)
|
|
20.11.2007, 21:34
|
#6
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: не могу понять в чем прикол
А версию MIDP какую поставил?
P.S. Выложи лучше полностью проект.
|
(Offline)
|
|
20.11.2007, 21:39
|
#7
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
обновленный проект(таже фигня)
|
(Offline)
|
|
20.11.2007, 23:25
|
#8
|
ПроЭктировщик
Регистрация: 13.11.2006
Сообщений: 101
Написано 6 полезных сообщений (для 6 пользователей)
|
Re: не могу понять в чем прикол
У меня на С75 прекрасно запустилось.
|
(Offline)
|
|
20.11.2007, 23:32
|
#9
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Re: не могу понять в чем прикол
Поле "Midlet vendor" заполни латиницей. На телефонах проблема из-за кириллицы.
Нет типа данных "byte" в midlet pascal.
|
(Offline)
|
|
20.11.2007, 23:49
|
#10
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
byte я случайно ввел, хотел взять маленький тип, привык к Паскалю
|
(Offline)
|
|
21.11.2007, 08:47
|
#11
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Re: не могу понять в чем прикол
В графическом режиме добавлять командные кнопки нельзя да и нажатия на них отлавливаться не будут. Так что убирай строки добавления кнопки Выход. Если так кортит добавить кнопку напиши что-то типа:
DrawText('Выход', GetWidth-GetStringWidth('Выход'), GetHeight-GetStringHeight('В'));
Repaint;
repeat
Delay(20); n:=GetKeyClicked;
if (n=-4) or (n=-7) or (n=-22) then break;
until false;
или убери переключение в графический режим (ShowCanvas), а результаты вычислений выводи на экран строкой:
ClearForm; n:=FormAddString('Длина: '+l);
|
(Offline)
|
|
21.11.2007, 11:21
|
#12
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: не могу понять в чем прикол
У меня на SE и так все работает.
|
(Offline)
|
|
22.11.2007, 23:46
|
#13
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
На Сименсе он запускается, но при одинаковой вводимой тройке чисел каждый раз выводит новый результат.
При тройке 120, 350, 40 должно выводится 21.52, а выводится что-то левое. Не могу понять че происходит.
|
(Offline)
|
|
23.11.2007, 15:30
|
#14
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: не могу понять в чем прикол
Попробуй добавить переинициализацию переменных перед каждым перерассчетом.
|
(Offline)
|
|
25.11.2007, 10:04
|
#15
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Re: не могу понять в чем прикол
Всё равно, кажется это формула косячит. Учи матчасть.
Program rulon;
Var
id1, id2, id3: integer;
d1, d2, l, h, n:real;
cmdNext, cmdExit, key: command;
Procedure Cls;
begin
ClearForm; SetFormTitle('Калькулятор рулонов 1.0.0');
cmdNext := CreateCommand('Считать', CM_OK, 1); AddCommand(cmdNext);
cmdExit := CreateCommand('Выход', CM_EXIT, 1); AddCommand(cmdExit);
end;
Begin
ShowForm;
repeat
Cls;
id1:=FormAddTextField('Диаметр рулона, (мм):', '', 5, TF_NUMERIC);
id2:=FormAddTextField('Толщина материала, (мкм):', '', 5, TF_NUMERIC);
id3:=FormAddTextField('Диаметр держателя, (мм):', '', 5, TF_NUMERIC);
repeat Delay(20); key:=GetClickedCommand; until key <> EmptyCommand;
if key=cmdExit then break;
d1:=StringToInteger(FormGetText(id1)); d1:=d1/1000;
h:=StringToInteger(FormGetText(id2)); h:=h/1000000;
d2:=StringToInteger(FormGetText(id3)); d2:=d2/1000;
n:=(d1-d2)/(2*h); l:=n*4.71238898*(d1-d2)/2;
Cls; n:=FormAddString('Длина: '+l);
repeat Delay(20); key:=GetClickedCommand; until key <> EmptyCommand;
if key=cmdExit then break;
until false;
End.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:06.
|