forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   не могу понять в чем прикол (http://forum.boolean.name/showthread.php?t=5075)

@lexxx 20.11.2007 20:33

не могу понять в чем прикол
 
Написал 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.

:SOS:

zheland 20.11.2007 21:02

Re: не могу понять в чем прикол
 
А ты на Samsung или на SonyEricsson пробовал?:-D
Ну а к делу :
я с MIDlet'ом не расбираюсь.
пересмотри код может где-то что-то перепутал.

zheland 20.11.2007 21:04

Re: не могу понять в чем прикол
 
Смотрю,напоминает Pascal!!!

@lexxx 20.11.2007 21:15

Re: не могу понять в чем прикол
 
Это и есть Паскаль. Ты название форума видел?

Alex_90 20.11.2007 21:26

Re: не могу понять в чем прикол
 
Цитата:

var dsID,hsID,d1sID,stringID: integer;
i, n: integer;
hi,di,d,d1,l,h,r,d1i:real;
cmdNext,cmdQuit: command;
А не много ли ты переменныых объявил?
Может памяти не хватает?

ViNT 20.11.2007 21:34

Re: не могу понять в чем прикол
 
А версию MIDP какую поставил?
P.S. Выложи лучше полностью проект.

@lexxx 20.11.2007 21:39

Re: не могу понять в чем прикол
 
Вложений: 2
обновленный проект(таже фигня)

EVIL_USER 20.11.2007 23:25

Re: не могу понять в чем прикол
 
У меня на С75 прекрасно запустилось.

Bruteo 20.11.2007 23:32

Re: не могу понять в чем прикол
 
Поле "Midlet vendor" заполни латиницей. На телефонах проблема из-за кириллицы.
Нет типа данных "byte" в midlet pascal.

@lexxx 20.11.2007 23:49

Re: не могу понять в чем прикол
 
byte я случайно ввел, хотел взять маленький тип, привык к Паскалю

odd 21.11.2007 08:47

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);

ViNT 21.11.2007 11:21

Re: не могу понять в чем прикол
 
У меня на SE и так все работает.

@lexxx 22.11.2007 23:46

Re: не могу понять в чем прикол
 
На Сименсе он запускается, но при одинаковой вводимой тройке чисел каждый раз выводит новый результат.
При тройке 120, 350, 40 должно выводится 21.52, а выводится что-то левое. Не могу понять че происходит.

ViNT 23.11.2007 15:30

Re: не могу понять в чем прикол
 
Попробуй добавить переинициализацию переменных перед каждым перерассчетом.

odd 25.11.2007 10:04

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.



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

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