|
Результаты опроса: Ваш телефон совместим с floating-point мидлетпаскаля?
|
Да, совместим
|
|
46 |
88.46% |
Нет, несовместим
|
|
6 |
11.54% |
30.06.2009, 06:45
|
#1
|
ПроЭктировщик
Регистрация: 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.
Последний раз редактировалось Bruteo, 30.06.2009 в 07:13.
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Bruteo за это полезное сообщение:
|
|
30.06.2009, 10:44
|
#2
|
Нуждающийся
Регистрация: 26.12.2008
Сообщений: 57
Написано 22 полезных сообщений (для 28 пользователей)
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
Nokia N73ME совместим
|
(Offline)
|
|
01.07.2009, 17:25
|
#3
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
Siemens C75 несовместим. Точно помню, сколько я на нем с синусами и косинусами промучался. Выскакивали какие-то совершенно неожиданные глюки.
|
(Offline)
|
|
27.07.2009, 16:14
|
#4
|
Знающий
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений (для 331 пользователей)
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
Сообщение от odd
Siemens C75 несовместим. Точно помню, сколько я на нем с синусами и косинусами промучался. Выскакивали какие-то совершенно неожиданные глюки.
|
Siemens C75 - Ура, ваш телефон совместим бла бла бла. Прошивка v24.
Но хз конечно, может быть просто в этой программе все нормально, а как там на самом деле при реальных задачах - трудно сказа
|
(Offline)
|
|
27.07.2009, 19:03
|
#5
|
Мастер
Регистрация: 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 // Тип данных для хранения точки или подобной бурды x, y, z: real; end; Var an, dx1, dy1, dx2, dy2: real; p: array [0..points] of point; // Тут хранятся все точки e: array [0..vortex, 0..3] of integer; // А тут все грани i, wi, hi, xi, yi: integer; temp, angle: point;
Procedure RotZ; var t,ar: real; 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,ar: real; 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,ar: real; 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 yes: integer; begin for i:=0 to vortex do begin dx1:=p[e[i,1]].x-p[e[i,0]].x; dy1:=p[e[i,1]].y-p[e[i,0]].y; dx2:=p[e[i,2]].x-p[e[i,1]].x; dy2:=p[e[i,2]].y-p[e[i,1]].y; if (dx1*dy2-dx2*dy1<0) then 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:=30; p[0].y:=30; p[0].z:=30; // Сама фигура (в оригинале - куб) p[1].x:=30; p[1].y:=-30; p[1].z:=30; p[2].x:=-30; p[2].y:=-30; p[2].z:=30; p[3].x:=-30; p[3].y:=30; p[3].z:=30; p[4].x:=30; p[4].y:=30; p[4].z:=-30; p[5].x:=30; p[5].y:=-30; p[5].z:=-30; p[6].x:=-30; p[6].y:=-30; p[6].z:=-30; p[7].x:=-30; p[7].y:=30; p[7].z:=-30;
p[8].x:=20; p[8].y:=20; p[8].z:=30; // Дырка p[9].x:=20; p[9].y:=-20; p[9].z:=30; p[10].x:=-20; p[10].y:=-20; p[10].z:=30; p[11].x:=-20; p[11].y:=20; p[11].z:=30; e[0,0]:=0; e[0,1]:=1; e[0,2]:=2; e[0,3]:=3; // ВАЖНО: Все точки в грани нужно описывать по ходу часовой стрелки! e[1,0]:=1; e[1,1]:=5; e[1,2]:=6; e[1,3]:=2; e[2,0]:=5; e[2,1]:=4; e[2,2]:=7; e[2,3]:=6; e[3,0]:=4; e[3,1]:=0; e[3,2]:=3; e[3,3]:=7; e[4,0]:=4; e[4,1]:=5; e[4,2]:=1; e[4,3]:=0; e[5,0]:=3; e[5,1]:=2; e[5,2]:=6; e[5,3]:=7; e[6,0]:=8; e[6,1]:=9; e[6,2]:=10; e[6,3]:=11; // Описание дырки wi:=GetWidth; hi:=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].x; temp.y:=p[i].y; temp.z:=p[i].z; an:=angle.x; RotX; an:=angle.y; RotY; an:=angle.z; RotZ; p[i].x:=temp.x; p[i].y:=temp.y; p[i].z:=temp.z; end; SetColor(0,0,0); FillRect(0,0,wi,hi); SetColor(0,255,0); Show; Repaint; until FALSE; End.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
01.08.2009, 01:07
|
#6
|
Разработчик
Регистрация: 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
|
ПроЭктировщик
Регистрация: 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
|
AnyKey`щик
Регистрация: 24.10.2009
Сообщений: 8
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
Sony Ericsson K800 (прошивка: R8BF003 версия java машины 7.7).
Тест прошел удачно (при помощи программы из первого поста).
|
(Offline)
|
|
27.10.2009, 15:20
|
#9
|
ПроЭктировщик
Регистрация: 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
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
Все работает, Siemens S75 прошивка 47-я.
|
(Offline)
|
|
16.12.2009, 19:24
|
#11
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
sony ericsson w300i работает! поддерживает
|
(Offline)
|
|
17.12.2009, 22:12
|
#12
|
Оператор ЭВМ
Регистрация: 07.02.2009
Адрес: Чебоксары
Сообщений: 28
Написано одно полезное сообщение
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
моторола л9 совместим с плавающей точкой
|
(Offline)
|
|
26.01.2010, 23:42
|
#13
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
Сообщение от Arton
Все работает, Siemens S75 прошивка 47-я.
|
Наврал я не работает на моём сименсе, сейчас перепроверил.
|
(Offline)
|
|
03.02.2010, 14:44
|
#14
|
ПроЭктировщик
Регистрация: 31.01.2010
Адрес: Россия, респ. Башкортостан, г. Бирск
Сообщений: 137
Написано 12 полезных сообщений (для 17 пользователей)
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
W760i работает отлично (ПО: 1202-3592 R3CA037 080713 Sony Ericson)
|
(Offline)
|
|
03.02.2010, 14:59
|
#15
|
Знающий
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений (для 331 пользователей)
|
Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
Сообщение от Arton
Наврал я не работает на моём сименсе, сейчас перепроверил.
|
Подтверждаю, на S75 куб от Odd'а превращается в хаотичные линии, хотя первый тест проходит. С другой стороны хорошим тоном считается избавление от floating-point в алгоритмах. Тот же куб можно легко сделать на целочисленных переменных. Я гарантирую это.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:24.
|