Показать сообщение отдельно
Старый 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 Кб, 1016 просмотров)

Последний раз редактировалось 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)