Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal

Результаты опроса: Ваш телефон совместим с floating-point мидлетпаскаля?
Да, совместим 46 88.46%
Нет, несовместим 6 11.54%
Голосовавшие: 52. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы
Старый 30.06.2009, 06:45   #1
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Злость Список телефонов, совместимых с floating-point МидлетПаскаля

Мидлет для проверки совместимости телефона в приложении к посту!

Думаю, некоторым форумчанам известно, что не на всех телефонах правильно работают приложения из MidletPascal, в которых используется floating-point (в русской версии мидлетпаскаля - в конфигурации сборки "Погрешность: до 0.000001"). На некоторых моделях телефонов расчёты с использованием чисел с плавающей точкой проводятся неправильно, и приходится использовать fixed-point (в русской версии мидлетпаскаля - в конфигурации сборки "Погрешность: до 0.0001") при сборке проекта.
Мной было установлено, что эти ошибки не постоянны, а возникают далеко не при каждом расчёте. Это может сильно подпортить настроение разработчикам, которые не знают об этой проблеме, но пытаются найти где же ошибка в их приложении.

Я предлагаю совместно составить список телефонов, на которых проявляется эта проблема или, наоборот, не проявляется. Для отнесения телефона к совместимым или несовместимым я написал простое приложение, которое сообщит, могут ли мидлеты с floating-point работать на вашем телефоне. Вам нужно просто установить мидлет, запустить, а потом отписаться в этой теме, сообщив результат теста и модель телефона.

После чего в первом сообщении в теме все данные будут оседать в упорядоченном виде. Мной уже был составлен небольшой список, от него и будем отталкиваться

Модели телефонов, на которых ПРАВИЛЬНО работают мидлеты с floating-point (в русской версии мидлетпаскаля - в конфигурации сборки "Погрешность: до 0.000001")

Nokia E70; Nokia E61; Nokia E61i; Nokia 6125; Nokia 5800; предположительно, все модели Nokia, выпущенные в 2006 году и позже

Модели телефонов, на которых НЕ работают мидлеты с floating-point("Погрешность: до 0.000001") и нужно использовать fixed-point("Погрешность: до 0.0001")

Nokia 7710; Nokia 6681; Nokia 6630; Nokia 6600; Nokia 3230; Siemens SL75, Siemens ME75

Мидлет для проверки совместимости телефона в приложении к посту!

Исходный код приложенного мидлета. Внимание! Собирать мидлет нужно, выбрав в конфигурации сборки floating-point("Погрешность: до 0.000001"). Иначе - толку от проверки не будет - все телефоны будут совместимы. В код программы я внёс проверку на правильность сборки мидлета, так что не удивляйтесь
Program mp_float_test;

var
cont,exitCmd,clicked:command;
label_id,i:integer;
text:string;
good_compile:boolean;

Begin
    clearform;
    exitCmd := createCommand('Выход', CM_EXIT, 2); 
    addCommand(exitCmd); 
    if Length(''+asin(1))<10 then
    begin
        good_compile:=false;
        label_id := formAddString('Вы запустили неправильно собранный мидлет. При сборке в конфигурации нужно выбрать floating-point(Погрешность: до 0.000001).'); 
    end;
    else
    begin
        good_compile:=true;
        label_id := formAddString('Сейчас начнется тестирование телефона на совместимость с floating-point в мидлетах MidletPascal.');
        cont := createCommand('Начать тест', CM_OK, 1); 
        addCommand(cont); 
    end;
    showForm;
    
    repeat 
        delay(50); 
        clicked:=getClickedCommand;
    until clicked <> emptyCommand; 
    if (clicked = exitCmd) or (not good_compile) then halt;
    
    clearform;
    text:='Ура! Ваш телефон совместим с floating-point! Пожалуйста, сообщите об этом на форуме boolean.name, указав модель.';
    i:=1;
    
    repeat
        i:=i+1;
        if (copy(''+exp(1),0,6)<>'2.7182') or
             (copy(''+sin(0.78539816),0,6)<>'0.7071') or
              (copy(''+pow(3.5,7),0,6)<>'6433.9') or
             (copy(''+log(25),0,6)<>'3.2188') then 
                        text:='К сожалению, ваш телефон НЕсовместим с floating-point! Пожалуйста, сообщите об этом на форуме boolean.name, указав модель.';
    until i<11;
    
    exitCmd := createCommand('Выход', CM_EXIT, 2); 
    addCommand(exitCmd); 
    label_id := formAddString(text); 
    
    repeat 
        delay(50); 
        clicked:=getClickedCommand;
    until clicked <> emptyCommand; 
End.
Вложения
Тип файла: zip mp_float_test.zip (15.2 Кб, 994 просмотров)

Последний раз редактировалось Bruteo, 30.06.2009 в 07:13.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Bruteo за это полезное сообщение:
baton4ik (16.12.2009), Harter (27.01.2010), impersonalis (27.07.2009), t()}{@ (22.06.2010)
Старый 30.06.2009, 10:44   #2
12121
Нуждающийся
 
Регистрация: 26.12.2008
Сообщений: 57
Написано 22 полезных сообщений
(для 28 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Nokia N73ME совместим
(Offline)
 
Ответить с цитированием
Старый 01.07.2009, 17:25   #3
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Siemens C75 несовместим. Точно помню, сколько я на нем с синусами и косинусами промучался. Выскакивали какие-то совершенно неожиданные глюки.
(Offline)
 
Ответить с цитированием
Старый 27.07.2009, 16:14   #4
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Сообщение от odd Посмотреть сообщение
Siemens C75 несовместим. Точно помню, сколько я на нем с синусами и косинусами промучался. Выскакивали какие-то совершенно неожиданные глюки.
Siemens C75 - Ура, ваш телефон совместим бла бла бла. Прошивка v24.
Но хз конечно, может быть просто в этой программе все нормально, а как там на самом деле при реальных задачах - трудно сказа
(Offline)
 
Ответить с цитированием
Старый 27.07.2009, 19:03   #5
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Хороший тест, это вот такой трехмерный кубик.
В идеале на экране должен вращаться кубик.
Если floating point вычисления глючат, то будет рисоваться
какая-то какофония из линий.

Program Project_3D_cube_2;

Uses    gfx;

Const
        
vortex 6// Количество граней -1
        
points 11// Количество точек -1

Type point record    // Тип данных для хранения точки или подобной бурды
    
xyzreal;
end;
        
Var    
andx1dy1dx2dy2real;
        
p: array [0..pointsof point// Тут хранятся все точки
        
e: array [0..vortex0..3of integer// А тут все грани
        
iwihixiyiinteger;
        
tempanglepoint;

Procedure RotZ;
var    
t,arreal;
begin
    t
:=sqrt(temp.x*temp.x+temp.y*temp.y);
        
ar:=atan2(temp.y,temp.x)+an;
        
temp.x:=t*cos(ar); temp.y:=t*sin(ar);
end;

Procedure RotY;
var    
t,arreal;
begin
    t
:=sqrt(temp.x*temp.x+temp.z*temp.z);
        
ar:=atan2(temp.z,temp.x)+an;
        
temp.x:=t*cos(ar); temp.z:=t*sin(ar);
end;

Procedure RotX;
var    
t,arreal;
begin
    t
:=sqrt(temp.x*temp.x+temp.y*temp.y);
        
ar:=atan2(temp.y,temp.x)+an;
        
temp.x:=t*cos(ar); temp.y:=t*sin(ar);
end;

Procedure Show;
var
    
yesinteger;
begin
    
for i:=0 to vortex do
    
begin
    dx1
:=p[e[i,1]].x-p[e[i,0]].xdy1:=p[e[i,1]].y-p[e[i,0]].y;
    
dx2:=p[e[i,2]].x-p[e[i,1]].xdy2:=p[e[i,2]].y-p[e[i,1]].y;
    if (
dx1*dy2-dx2*dy1<0then
        begin
        DrawLine
(trunc(p[e[i,0]].x+wi/2), trunc(p[e[i,0]].y+hi/2), trunc(p[e[i,1]].x+wi/2), trunc(p[e[i,1]].y+hi/2));
        
DrawLine(trunc(p[e[i,1]].x+wi/2), trunc(p[e[i,1]].y+hi/2), trunc(p[e[i,2]].x+wi/2), trunc(p[e[i,2]].y+hi/2));
        
DrawLine(trunc(p[e[i,2]].x+wi/2), trunc(p[e[i,2]].y+hi/2), trunc(p[e[i,3]].x+wi/2), trunc(p[e[i,3]].y+hi/2));
        
DrawLine(trunc(p[e[i,3]].x+wi/2), trunc(p[e[i,3]].y+hi/2), trunc(p[e[i,0]].x+wi/2), trunc(p[e[i,0]].y+hi/2));
    
end;
    
end;
end;

Begin
    an
:=0.017;
    
p[0].x:=30p[0].y:=30p[0].z:=30;            // Сама фигура (в оригинале - куб)
    
p[1].x:=30p[1].y:=-30p[1].z:=30;
    
p[2].x:=-30p[2].y:=-30p[2].z:=30;
    
p[3].x:=-30p[3].y:=30p[3].z:=30;
    
p[4].x:=30p[4].y:=30p[4].z:=-30;
    
p[5].x:=30p[5].y:=-30p[5].z:=-30;
    
p[6].x:=-30p[6].y:=-30p[6].z:=-30;
    
p[7].x:=-30p[7].y:=30p[7].z:=-30;

    
p[8].x:=20p[8].y:=20p[8].z:=30;                // Дырка
    
p[9].x:=20p[9].y:=-20p[9].z:=30;
    
p[10].x:=-20p[10].y:=-20p[10].z:=30;
    
p[11].x:=-20p[11].y:=20p[11].z:=30;
    
    
e[0,0]:=0e[0,1]:=1e[0,2]:=2e[0,3]:=3;            // ВАЖНО: Все точки в грани нужно описывать по ходу часовой стрелки!
    
e[1,0]:=1e[1,1]:=5e[1,2]:=6e[1,3]:=2;
    
e[2,0]:=5e[2,1]:=4e[2,2]:=7e[2,3]:=6;
    
e[3,0]:=4e[3,1]:=0e[3,2]:=3e[3,3]:=7;
    
e[4,0]:=4e[4,1]:=5e[4,2]:=1e[4,3]:=0;
    
e[5,0]:=3e[5,1]:=2e[5,2]:=6e[5,3]:=7;
    
    
e[6,0]:=8e[6,1]:=9e[6,2]:=10e[6,3]:=11;        // Описание дырки
    
    
wi:=GetWidthhi:=GetHeight;
    
    
angle.x:=1*0.017;
    
angle.y:=2*0.017;
    
angle.z:=1*0.017;
    
    
repeat
    
for i:=0 to points do
        
begin
            temp
.x:=p[i].xtemp.y:=p[i].ytemp.z:=p[i].z;
            
an:=angle.x;
            
RotX;
            
an:=angle.y;
            
RotY;
            
an:=angle.z;
            
RotZ;
            
p[i].x:=temp.xp[i].y:=temp.yp[i].z:=temp.z;
        
end;
        
SetColor(0,0,0); FillRect(0,0,wi,hi); SetColor(0,255,0);
        
ShowRepaint;
    
until FALSE;
End
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
IDOL 1234 (23.08.2010)
Старый 01.08.2009, 01:07   #6
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Хороший тест, это вот такой трехмерный кубик.
В идеале на экране должен вращаться кубик.
Если floating point вычисления глючат, то будет рисоваться
какая-то какофония из линий.
Если правильно выставить floating point до 0,000001 в проекте то будет про рисовываться куб, иначе ерись. Проверял на KEmulatore и N7390.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...

Последний раз редактировалось GRAY_WOLF, 01.08.2009 в 01:13.
(Offline)
 
Ответить с цитированием
Старый 25.10.2009, 21:50   #7
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Сообщение от Tronix Посмотреть сообщение
Siemens C75 - Ура, ваш телефон совместим бла бла бла. Прошивка v24.
Но хз конечно, может быть просто в этой программе все нормально, а как там на самом деле при реальных задачах - трудно сказа
Мой опыт показывает, что если телефон не заваливается на нескольких прогонах простых тестов (что и реализовано в приложении из первого поста) - то он не заваливается, вообще.
Мой опыт: приложение fncalc, протестированное на многих телефонах.
http://frolov.net/fncalc/

Опять же, я наблюдал, что при единичном прогоне вычислений из тестового приложения - некоторые кривые ява машины таки давали верный результат. Поэтому в тестовом приложении тест загнан в цикл на 10 повторов.
Было бы, конечно, здорово разобраться в природе этой ошибки и исправить. Моё копание в исходниках компилятора не дало результатов. Нужно глубже понимать принципы построения и выполнения байткода, видимо =)
(Offline)
 
Ответить с цитированием
Старый 26.10.2009, 15:29   #8
GanGSISoft
AnyKey`щик
 
Регистрация: 24.10.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Sony Ericsson K800 (прошивка: R8BF003 версия java машины 7.7).
Тест прошел удачно (при помощи программы из первого поста).
(Offline)
 
Ответить с цитированием
Старый 27.10.2009, 15:20   #9
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Собранная мной информация по совместимым телефонам ещё:
SonyEricsson K610i, K770i, K810i, C902, W760a, W910i, K320i, W580i, W760i, K850i, K660i, G700, K850i, W800i, Z710i, K550i... огромное количество других сонериков, не буду перечислять);
LG KP500; LG KM900;
SAMSUNG SGH-U800; SAMSUNG SGH-U600; SAMSUNG SGH-i450; SAMSUNG S5230; SAMSUNG SGH-J700;
HTC Touch Viva


Вообще, складывается ощущение, что проблемы только на большинстве сименсов и на старых нокиях(2005 год и старше). Если кто-то может опровергнуть это предположение - пишите =)
(Offline)
 
Ответить с цитированием
Старый 13.12.2009, 14:58   #10
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Все работает, Siemens S75 прошивка 47-я.
(Offline)
 
Ответить с цитированием
Старый 16.12.2009, 19:24   #11
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

sony ericsson w300i работает! поддерживает
(Offline)
 
Ответить с цитированием
Старый 17.12.2009, 22:12   #12
scorey
Оператор ЭВМ
 
Аватар для scorey
 
Регистрация: 07.02.2009
Адрес: Чебоксары
Сообщений: 28
Написано одно полезное сообщение
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

моторола л9 совместим с плавающей точкой
(Offline)
 
Ответить с цитированием
Старый 26.01.2010, 23:42   #13
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Сообщение от Arton Посмотреть сообщение
Все работает, Siemens S75 прошивка 47-я.
Наврал я не работает на моём сименсе, сейчас перепроверил.
(Offline)
 
Ответить с цитированием
Старый 03.02.2010, 14:44   #14
Ksanatos
ПроЭктировщик
 
Аватар для Ksanatos
 
Регистрация: 31.01.2010
Адрес: Россия, респ. Башкортостан, г. Бирск
Сообщений: 137
Написано 12 полезных сообщений
(для 17 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

W760i работает отлично (ПО: 1202-3592 R3CA037 080713 Sony Ericson)
(Offline)
 
Ответить с цитированием
Старый 03.02.2010, 14:59   #15
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля

Сообщение от Arton Посмотреть сообщение
Наврал я не работает на моём сименсе, сейчас перепроверил.
Подтверждаю, на S75 куб от Odd'а превращается в хаотичные линии, хотя первый тест проходит. С другой стороны хорошим тоном считается избавление от floating-point в алгоритмах. Тот же куб можно легко сделать на целочисленных переменных. Я гарантирую это.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список строк artemff Программирование 1 02.01.2010 14:43
зависание в режиме fixed-point demon112 BugTracker 0 06.10.2009 12:59
Как сделать ниспадающий список? Stabilitron 2D-программирование 3 18.10.2007 17:54
Список Софта. moka Болтовня 3 15.07.2007 19:52
О вреде телефонов DRAG Юмор 1 04.12.2006 18:00


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com