OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 13 Декабрь, 2019 05:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 111 ]  На страницу Пред.  1, 2, 3, 4, 5, 6
Автор Сообщение
СообщениеДобавлено: Пятница, 08 Ноябрь, 2019 23:49 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 159
Откуда: Питер
Как при помощи Ofront+'а создать неконсольное приложение?
(у меня получаются только консольные)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Ноябрь, 2019 00:19 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 350
Откуда: Украина, Днепропетровская обл.
В MinGW есть опция командной строки -mwindows для создания неконсольных приложений.

В проекте XDev есть подсистема WinDev, где есть несколько примеров оконных приложений:



Вложения:
GuiApps.png
GuiApps.png [ 69.49 КБ | Просмотров: 256 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Ноябрь, 2019 12:19 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 350
Откуда: Украина, Днепропетровская обл.
Ещё в качестве примера неконсольного приложения есть порт игры арканоид на библиотеке Graph (прослойка к SDL 2 от Артура Ефимова, взятая из Free Oberon):


Игра переписана с Monkey-X на Оберон-2 и компилируется при помощи XDev (через Ofront+) для Windows/Linux 32/64 бит. Думаю, для какой-нить малинки тоже соберётся.


Вложения:
Arkanoid.png
Arkanoid.png [ 42.65 КБ | Просмотров: 241 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Ноябрь, 2019 12:31 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 350
Откуда: Украина, Днепропетровская обл.
Я сейчас тестирую WriteLongReal после своих интеллигентных правок. И конечно есть расхождения с BlackBox. Например:

Код:
CONST
  _2* = MAX(REAL) / 2;
  _4* = MAX(REAL) / 4;
  _8* = MAX(REAL) / 8;
  _16* = MAX(REAL) / 16;
  a* = 1.7976931348623E+308;
  max* = MAX(REAL); min* = MIN(REAL);

BlackBox:
Код:
    _2 = 8.988465674311579E+307;
    _4 = 4.494232837155789E+307;
    _8 = 2.247116418577895E+307;
    _16 = 1.123558209288947E+307;
    a = 1.7976931348623E+308;
    max = 1.797693134862316E+308;
    min = -1.797693134862316E+308;

Ofront+
Код:
    _2 = 8.98846567431157E+307;
    _4 = 4.49423283715579E+307;
    _8 = 2.24711641857789E+307;
    _16 = 1.12355820928895E+307;
    a = 1.7976931348623E+308;
    max = 1.79769313486231E+308;
    min = -1.79769313486231E+308;

Очень плохо, что MAX(LONGINT) отличается. Но это предельное граничное число, поэтому ничего удивительного. И ещё: одинаковый код иногда по-разному считает в BlackBox и в Ofront+/GCC входящее вещественное число в сканере OPS. Это я объясняю тем, что GCC использует сопроцессор с 80-битовой вещественной арифметикой. BlackBox тоже использует его же, но GCC ещё и хранит промежуточные значения в 80-битной форме, а BlackBox нет.

Что будем с этим делать, GameHunter? Дело ещё и в мантиссе. Она при выводе числа считается сишной функцией ecvt (в Reals.ConvertL). Притом у меня нет ответа, кто более правильно считает — BlackBox или ecvt.

Ну, в общем, на днях закоммичу эти правки, хуже всё равно не стало, только лучше. Раньше эти граничные значения вообще вызывали ошибку 203 "number too large".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Ноябрь, 2019 03:24 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 159
Откуда: Питер
Всё в порядке, покуда разница между ББ и Офронтом в 15-м знаке после запятой.

Цитата:
Очень плохо, что MAX(LONGINT)

Вы, наверное, MAX(REAL) имели в виду?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Ноябрь, 2019 09:04 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 350
Откуда: Украина, Днепропетровская обл.
Да, точно. MAX(REAL)

А погрешность-то и 14-й знак после запятой задевает. А из-за заниженного MAX(REAL) вообще боюсь, что сузится диапазон допустимых чисел для расчётов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Ноябрь, 2019 10:42 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4363
Откуда: Россия, Орёл
Сильно не сузится. Это границы диапазона, на них в здравом уме никто считать не будет. А проблемы с вещественными можно огрести гораздо раньше.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Ноябрь, 2019 11:27 

Зарегистрирован: Суббота, 04 Май, 2019 10:21
Сообщения: 6
The question about floating point numbers has been discussed in the center.Robert(author of Lib) is an expert,you'd better ask him if worry about it ;

Adding new features is not impossible, but we must consider whether it is really necessary, compatibility issues, the amount of code added, stability, implementation issues of other architectures... etc.

The center puts more focus on error handling than adding new features to make this product more stable .Subject to limited resources, they had to;

But the Russian community is open, there are many new ideas and projects here(Including your). I like it;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 08 Декабрь, 2019 06:26 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 350
Откуда: Украина, Днепропетровская обл.
Поправлена работа с большими вещественными числами. Устаревшая функция ecvt заменена на sprintf. При конвертации длинного вещественного в строку точность у sprintf повыше, чем это делает BlackBox. Не то чтобы я не хотел переписать конвертацию на Оберон, но это потом.

Александр Ширяев успешно собрал Ofront+ для OpenBSD x86. А сборка для FreeBSD x64 закончилась неудачей (из-за отсутствия поддержки в ней этой самой ecvt). Сейчас можно опять пробовать.

Я реструктурировал проект, теперь в нём есть папка Target, в которой размещены файлы для поддержки следующих платформ:

- Linux64
- Linux86
- LinuxArm
- Win32
- Win64

Саша, у меня такая просьба: если будет время/желание, пособирай Ofront+ для разных систем на базе BSD, чтобы добавить в Target поддержку сборки и под них.

Если у кого-то есть возможность собрать Ofront+ для macOS, будет тоже интересно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 08 Декабрь, 2019 21:01 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 350
Откуда: Украина, Днепропетровская обл.
Для обсуждения вопросов развития Ofront+ создана группа в Телеграме:


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 08 Декабрь, 2019 23:06 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1214
Oleg N. Cher писал(а):
Это я объясняю тем, что GCC использует сопроцессор с 80-битовой вещественной арифметикой. BlackBox тоже использует его же, но GCC ещё и хранит промежуточные значения в 80-битной форме, а BlackBox нет.

Насколько я помню, GCC использует арифметику с произвольной точносттью.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 111 ]  На страницу Пред.  1, 2, 3, 4, 5, 6

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB