forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   проблемка с MIDletом (http://forum.boolean.name/showthread.php?t=5055)

@lexxx 18.11.2007 21:52

проблемка с MIDletом
 
Граждане, помогите с програмкой.
Код:

program rulon;
var dsID,hsID,d1sID,stringID,lsID,stringID1:integer;
        s,dl,d1l,hl:string;
        ds,hs,d1s,ls:string;
        i,n,di,hi,d1i:integer;
        d,d1,l,h,r:real;
        cmdQuit,cmdNext,cmdRun: command;
begin
    ShowForm;
    dsID:=FormAddTextField('Введите диаметр рулона в мм', '', 4, TF_NUMERIC);
  AddCommand(cmdNext);
  hsID:=FormAddTextField('Введите толщину материала в мкм', '', 4, TF_NUMERIC);
  AddCommand(cmdNext);
  d1sID:=FormAddTextField('Введите диаметр держателя в мм', '', 10, TF_NUMERIC);
  AddCommand(cmdNext);
  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));
    r:=d1+h;
    for i:=1 to n do
    begin
        l:=l+3.14*r;
        r:=r+h;
    end;
    drawText(''+l,0,0);
    repaint;
    cmdQuit := CreateCommand('Выход', CM_EXIT, 1);
    AddCommand(cmdQuit);
    repeat until GetClickedCommand = cmdQuit;
end.

Запускается нормально. Вводятся данные в формы, адальше - облом. Появляется белый экран и прога зависает. Подскажите пожалуйста, что нужно исправить. :SOS:

ViNT 18.11.2007 22:54

Re: проблемка с MIDletом
 
Нужно на вкладке "Properties" поставить
MIDP Version:MIDP 2.0
Real Numbers:Floating-Point.
(Тогда приложение будет работать только на мобилах с MIDP 2.0)

@lexxx 18.11.2007 23:44

Re: проблемка с MIDletом
 
Все поменял, но почему-то выводит только 0.
P.S. Что сделать, чтобы он работал с MIDP 1.0 ?

ViNT 19.11.2007 00:42

Re: проблемка с MIDletом
 
Я немного ошибся, можно оставить
MIDP Version:MiDP 1.0 тогда будет работать и с MIDP 1.0.
А вот почему выходит 0 - непонятно.

odd 19.11.2007 08:44

Re: проблемка с MIDletом
 
Просто наредкость неряшливая программа, но что-то там считает.
Тут скорее формула косячит, но об этом пусть уже думает автор.
Версия MIDP1.0, плавающая точка стоит в положении Плавающая (Floating-point в английской версии MP)
Для примера 8000, 2000, 2000 результат: 7069.71

program rulon;
var dsID,hsID,d1sID: integer;
i, n: integer;
hi,di,d,d1,l,h,r,d1i:real;
cmdNext: command;
begin
ShowForm; cmdNext := CreateCommand('Считать', CM_OK, 1); AddCommand(cmdNext);
dsID:=FormAddTextField('Введите диаметр рулона в мм', '', 4, TF_NUMERIC);
hsID:=FormAddTextField('Введите толщину материала в мкм', '', 4, TF_NUMERIC);
d1sID:=FormAddTextField('Введите диаметр держателя в мм', '', 10, TF_NUMERIC);
repeat until GetClickedCommand = cmdNext;
di:=StringToInteger(FormGetText(dsID));
d:=di/1000;
hi:=StringToInteger(FormGetText(hsID));
h:=hi/1000000;
d1i:=StringToInteger(FormGetText(d1sID));
d1:=d1i/1000;
ShowCanvas;
n:=trunc((d-d1)/(2*h)); l:=0;
for i:=0 to n do
begin
l:=l+3.14*r;
r:=r+h;
end;
drawText(''+l,5,5);
repaint; Delay(10000);
end.

@lexxx 19.11.2007 17:50

Re: проблемка с MIDletом
 
Всем большое спасибо.:super:

bubon 03.03.2008 14:28

Ответ: проблемка с MIDletом
 
сделал мидлет. работает на всех телефонах стабильно. на смартах при запуске нескольких разных приложений одновременно с моим мидлетом при переходе на мой мидлет происходит зависание всего смарта. что может быть? и как избавиться от этого?


Часовой пояс GMT +4, время: 01:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot