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

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

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

Ответ
 
Опции темы
Старый 17.05.2011, 19:24   #1
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
не могу победить double

появилась беда, с которой я не в состоянии справиться без посторонней помощи.
при компиляции библиотеки, содержащей более четырех переменных типа double, проблем не возникает, однако MP2.2 на них реагирует неадекватно (ошибкой чтения либы). начинает утверждать, что ни одной из запрашиваемых функций в либе не нашел.
тоже происходит, если присутствует много вещественных чисел типа .5 или 1.0.

в связи с этим вопрос: как вы, ветераны либописания, справляетесь с этой проблеммой? ведь иногда необходимо использовать несколько нецелочисленных переменных.

не составит ли для вас труда выложить кусочек кода любой библиотеки, где вы работаете с типом double? может, я что-то не так делаю.

з.ы.: компилировал с помощью LibCo и Art-чего-то-там-от-Phantoma
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Старый 17.05.2011, 23:02   #2
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: не могу победить double

товарисч Phantom посоветовал следующее:
"Сделай копию своей библиотеки, только реализацию всех методов удали нафиг, просто пустые методы оставь, только return оставь и возвращай нужный тип данных. Глобальные приватные переменные можешь не объявлять. Скомпилируй, сунь в МП. МП тебе скомпилирует проект (понятно, что работать-то не будет, но компилятор ни к чему не придерётся), а потом в готовом JARе замени либу болванку настоящей либой. И проверь будет ли работать. Если будет, то это какой-то баг МП"

проверил, работает...

" Вот видишь. То баг МП"

ему смешно, а у моей любимой игрушки будто лапку оторвали. надо выбрасывать старые игрушки и учить java ..(
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Старый 18.05.2011, 04:38   #3
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: не могу победить double

А как внасчет скачать последнюю версию МП(3.3C)?
Проверял на следующей библиотеке
public class Lib_test
{
    public static 
double d1;
    public static 
double d2;
    public static 
double d3;
    public static 
double d4;
    public static 
double d5;
    public static 
double d6;
    public static 
double d7;
    public static 
double d8;
    public static 
void save1(String value) { d1 Double.parseDouble(value); }
    public static 
void save2(String value) { d2 Double.parseDouble(value); }
    public static 
void save3(String value) { d3 Double.parseDouble(value); }
    public static 
void save4(String value) { d4 Double.parseDouble(value); }
    public static 
void save5(String value) { d5 Double.parseDouble(value); }
    public static 
void save6(String value) { d6 Double.parseDouble(value); }
    public static 
void save7(String value) { d7 Double.parseDouble(value); }
    public static 
void save8(String value) { d8 Double.parseDouble(value); }
    public static 
String sumall()
    {
        return 
Double.toString((d1+d2+d3+d4+d5+d6+d7+d8));
    }
    public static 
String some()
    {
        return 
"It quite works.";
    }

Несмотря на то что double целых 8, все работает нормально.

Для MP2.2 тоже есть вариант (правда немного ненормальный): храните все double в массиве. Пример кода:
public class Lib_test
{
    public static 
double d[] = new double[8];
    public static 
void setd(int iString value)
    {
        
d[i] = Double.parseDouble(value);
    }
    public static 
String sumall()
    {
        
d[0] = 0;
        for (
int i 18+= 1d[0] += d[i];
        return 
Double.toString(d[0]);
    }
    public static 
String some()
    {
        return 
"It quite works.";
    }



... програмное обеспечение обновляют ведь не просто так.
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
(Offline)
 
Ответить с цитированием
Старый 18.05.2011, 17:24   #4
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: не могу победить double

Сообщение от YellowAfterlife Посмотреть сообщение
А как внасчет скачать последнюю версию МП(3.3C)?
она у меня есть, но хотелось бы чтобы либа работала на всех версиях мп. мне, кстати, мп2.2 нравится своим замечательным графическим редактором.

Сообщение от YellowAfterlife Посмотреть сообщение
Проверял на следующей библиотеке
и впрямь работает... похоже, я ошибся, и проблемка у меня была в другом:
добавляем в вашу библиотеку Lib_test, в строку вычисления одно число и библиотека становится непригодной для использования в мп.
return Double.toString((d1*0.5+d2+d3+d4+d5+d6+d7+d8)); 
Сообщение от YellowAfterlife Посмотреть сообщение
Для MP2.2 тоже есть вариант (правда немного ненормальный): храните все double в массиве.
спасибо за совет, но я пару дней назад пробовал этот вариант. в моем случае это не помогло, к сожалению. тогда я еще не догадался, что проблемма у меня была не в количестве вещественных переменных, а в контексте, в котором они используются. что-то не то с выражениями, в которых используются double.

проблемма немного изменила свою суть, но осталась пока нерешенной.

x = (int) (x1*(1.0 - i*1.0/(steps*1.0))*(1.0 - i*1.0/(steps*1.0)) + x2*(i*1.0/(steps*1.0))*(1.0 - i*1.0/(steps*1.0)) + x3*(i*1.0/(steps*1.0))*(i*1.0/(steps*1.0)));

если в этой строке заменить любое 1.0 скажем на число 2.0, то библиотека не работает, мп ее не читает.
в общем, мп2.2 не признает вычислений с любыми вещественными, отличными от 1.0 ..(
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Старый 18.05.2011, 17:56   #5
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: не могу победить double

забодай меня трамваем! включил floating-point и всё заработало. а вчера это не помогло почему-то. и я зачем-то вернул fixed-point и потратил еще один день на возню с несуществующей проблемой. вот зачем я это сделал?

ну чтож, по крайней мере, я победил этот драный double, а заодно пообщался с умными людьми ..)

добавлено позже:
хер я чо победил. продолжает глючить, теперь не могу объявить больше 1й переменной типа double. никакие float не помогают
__________________
to be or not to be - it's not a question!
2b or not 2b = ff

Последний раз редактировалось barsunduk, 18.05.2011 в 21:34.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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