Мидлет для проверки совместимости телефона в приложении к посту!
Думаю, некоторым форумчанам известно, что не на всех телефонах правильно работают приложения из 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.