PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OffTop » PureBasic 6.20


PureBasic 6.20

Сообщений 1 страница 21 из 21

1

Вышла бета версия PureBasic 6.20.

Fred написал(а):

Привет всем,

Рождество близко, а значит и следующая основная версия PureBasic! Этот релиз — важный шаг к тому, чтобы PureBasic оставался актуальным и актуальным в будущем, с большим обновлением OGRE 3D (до последней версии, включая все его зависимости для всех ОС) и новой поддержкой Windows arm64. Он также включает в себя некоторые долгожданные команды, такие как сокеты TLS и создание собственной PureLibrary напрямую с помощью PureBasic!

Код:
- Updated: OGRE 3D to lastest 14.3 version (big thanks for the help Pf Shadoko) !
- Added: Windows 11 arm64 support !
- Added: TLS support for Network library (Thanks Idle for the tips) !
- Added: PureLibrary creation in PureBasic (C Backend only) !
- Added: WebWiewProxy() to enable proxy support (Sponsored by Kukulkan)
- Added: #PB_Editor_TabNavigation support to EditorGadget() (Sponsored by Quin)
- Added: #PB_Entity_InheritScale support Get/SetEntityAttribute()
- Added: DLL support to UsePostgreSQL() (Sponsored by wayne-c)
- Added: Windows 10+ mode to link directly to UCRT.dll to have smaller executables and up-to-date CRT
- Added: IsPack()
- Added: PureBasic-CLI.cmd to easily open a commandline environment (Windows)

Ogre3D.

Код:
- Added: Get/SetWorldAttribute() to control water and sky
- Optimized: BuildMeshLOD() now uses a much better algorithm for automatic lod creation
- Modified: SaveRenderTexture() -> only .png format is supported
- Modified: reworked SkyDome() and CreateWater() fonction to have better and faster rendering
- Modified: Add3DArchive() always needs to be after OpenScreen()
- Modified: filenames are now case-sensitive even on Windows and OS X
- Removed: Sun() has been removed -> replacement with CreateLight()
- Removed: LoadWord() which was based on old BSP tech
- Removed: WaterHeight()
- Removed: SwitchCamera() which makes no sense

Пример создания библиотеки (PureLibrary).

Код:
DisablePureLibrary Test ; Needed to avoid function conflict if the lib is already loaded

Global Test$
Global NewMap a()

Procedure InitPureLibrary()
  MessageRequester("Init","Init")
EndProcedure

Procedure FreePureLibrary()
  MessageRequester("End","End")
EndProcedure


;  QuickHelp  MyMax(Min [, Max [, Flags, Mode]]) - A standard min/max function
ProcedureDLL MyMax3(a, b, c, d)
  Static cc = 16
  Test$ = "Hello"
  ProcedureReturn OpenWindow(#PB_Any, 10, 10, 200, 200, "Test")
EndProcedure

ProcedureDLL MyMax2(a, b) ; version 2, 3, 4 .... allow to create optional parameter functions (PureBasic default values are not accepted)
  ProcedureReturn MyMax3(a, b, 0, 0)
EndProcedure

ProcedureDLL MyMax(a)
  ProcedureReturn MyMax2(15, 20)
EndProcedure

; QuickHelp GetTest() - Returns the test content
ProcedureDLL.s GetTest()
  ProcedureReturn Test$+Right(" World", 4)
EndProcedure

ProcedureDLL.s GetFloat(a.f, b.i, c.d)
  ProcedureReturn StrF(a) + ", "+ Str(b)+ ", "+StrD(c)
EndProcedure

ProcedureDLL.s GetString(a$, b$, c.d, d$)
  ; MessageRequester(a$ + b$ + c + d$, "")
  ProcedureReturn a$ + b$ + " " + c +" " + d$
EndProcedure


ProcedureDLL GetArray(Array myArray(1))
  ReDim myArray(20)
  a = myArray(3)
  ProcedureReturn ArraySize(myArray())
EndProcedure

ProcedureDLL GetList(List myList())
  AddElement(myList())
  AddElement(myList())
  ProcedureReturn ListSize(myList())
EndProcedure

ProcedureDLL GetMap(Map myMap())
  AddMapElement(myMap(), "Test")
  AddMapElement(myMap(), "Test2")
  AddMapElement(myMap(), "Test3")
  ProcedureReturn MapSize(myMap())
EndProcedure

ProcedureDLL.d GetDouble(a.d, b.d)
  b$ = "World"
  a$ = GetString("aaa", "bbb"+b$, 4545, b$+b$)
  
  ProcedureReturn a*b
EndProcedure
Fred написал(а):

На данный момент его можно скомпилировать только с помощью командной строки с бэкэндом C.

В Windows откройте PureBasic-CLI.cmd (в Windows arm64 используйте 'pbcompiler' вместо 'pbcompilerc'):

pbcompilerc LibTest.pb --purelibrary --output Тест

В Linux/OSX/Raspberry задайте переменную PUREBASIC_HOME для вашей корневой установки PureBasic и добавьте $PUREBASIC_HOME/compilers в PATH. В Linux x86 или Linux x64 используйте 'pbcompilerc' вместо 'pbcompiler'.

pbcompiler LibTest.pb --purelibrary --output Тест

Если все пойдет хорошо, у вас должна быть установлена ​​новая библиотека, и после перезапуска компилятора вы сможете ее протестировать.

Для PureBasic purelibrary есть некоторые ограничения:
- Нет поддержки отладчика (в процессе)
- Все функции компилируются в один и тот же объект, что означает, что библиотека всегда будет включать все функции в конечном исполняемом файле.

0

2

Похоже что в дистрибутив был включен перевод на русский. В папке Catalogs есть папка Russian.

0

3

Пётр написал(а):

Похоже что в дистрибутив был включен перевод на русский. В папке Catalogs есть папка Russian.

Дожили таки :)

0

4

Пётр написал(а):

Похоже что в дистрибутив был включен перевод на русский. В папке Catalogs есть папка Russian.

Открываем содержимое в редакторе, видим "Creator = purebasic.mybb.ru"  это жеж неспроста  :cool:

0

5

Kuzmat написал(а):

видим "Creator = purebasic.mybb.ru"  это жеж неспроста

Эта строка там появилась когда давно я адаптировал перевод под новые версии.
Но это было наверное 10 лет назад, а может раньше.

0

6

Может эти 2 поста повлияли. Fred в этой теме отписывался.

0

7

Потестировал немного версию Windows ARM64.
Изначально вообще не компилировалось из-за ошибки ресурсов. Когда отключил, приложения начали запускаться кроме 3D. В них ошибки, но вероятно из-за того что Фред обновил "Великана-людоеда". :D Посмотрим что будет дальше после исправления ошибок.
Асм. компилятора по понятным причинам нет. :dontknow: GCC тоже нет. Вместо него шланг.

0

8

AZJIO написал(а):

Может эти 2 поста повлияли. Fred в этой теме отписывался.

У кого-то есть права на редактирование файлов в репозитории?
Файлы compiler.catalog, debugger.catalog и libraries.catalog должны быть в utf-8 без BOM. Сейчас с BOM и из-за этого текст на английском.

0

9

Возник вопрос: нет ли в этой версии tooltip с многострочным текстом? И как работает функция Chr() Unicode - поддерживаются суррогаты( или суррогатные пары)?

0

10

egons написал(а):

нет ли в этой версии tooltip с многострочным текстом?

На WinAPI можно. Или в линукс, макос тоже требуется?

egons написал(а):

И как работает функция Chr() Unicode - поддерживаются суррогаты( или суррогатные пары)?

Костыльно поддерживает. https://www.purebasic.fr/english/viewtopic.php?t=64947
https://www.purebasic.fr/english/viewto … 17#p621917

Дело в том что суррогатная пара это 4 байта, а не 2.

0

11

egons
Скачай LauncherPB, в конце исходника посмотри функции BalloonTip2()

0

12

Ну ясно, всё на костылях(:
А вот еще один момент: при использовании  GetSaveFileName флага OFN_OVERWRITEPROMPT диалоговое окно будет запрашивать перезаписать файл, или нет?
В SaveFileRequester подобного нет.

0

13

egons написал(а):

Ну ясно, всё на костылях(:

Почему на костылях? Это стандартный  способ с WinAPI-функциями. Если бы Фред делал, то получилось бы тоже самое, просто код под капотом не был бы виден. Один раз написал для себя функцию и потом всю жизнь используй. Я ведь тоже переделал, для меня было не экономично создавать кучу дескрипторов на каждую кнопку и я сделал один дескриптор. Хотя может это неправильно и дескрипторы нужны на каждую кнопку и должны освобождаться.

egons написал(а):

перезаписать файл, или нет?

так есть же функция FileSize(), чтобы проверить есть ли файл и надо ли его заменять выдав мессагу самостоятельно

Код:
If MessageRequester("Перезаписать?", "Вы хотите перезаписать файл ...?", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
	Debug "да"
EndIf

If MessageRequester("Перезаписать?", "Вы хотите перезаписать файл ...?", #PB_MessageRequester_YesNo) = #PB_MessageRequester_No
	Debug "нет"
EndIf

Кстати, это из моей программы автоподстановки, я написал "диал", вызвал хоткей и выбрал фрагмент кода, лишний удаляем, остальное заполняем.

0

14

AZJIO написал(а):

так есть же функция FileSize(), чтобы проверить есть ли файл и надо ли его заменять выдав мессагу самостоятельно

Я видел подобное решение, но в WinAPI диалог ведет себя иначе.

AZJIO написал(а):

Если бы Фред делал, то получилось бы тоже самое, просто код под капотом не был бы виден. Один раз написал для себя функцию и потом всю жизнь используй

В том-то и дело. Хорошо, если бы сделал.

0

15

egons написал(а):

но в WinAPI диалог ведет себя иначе.

В том то и дело чтобы сделать это должно работать на 3-х ОС, а не только на WinAPI.

egons написал(а):

В том-то и дело. Хорошо, если бы сделал.

та же проблема 3 ОС, а не WinAPI.

Есть кроссплатформенные функции работы со строкой, которые я сделал у себя в дополнительной справке, но я не думаю что хоть что-то будет добавлено, потому что это придётся обслуживать вечно, потом если передумал или захотел сделать по другому, уже не получится избавиться, не получив жёсткую критику. Поэтому то что есть не думаю что будет меняться. Думаю то что есть перенести это в C-Backend требовало усилий, да и исправление багов стоит не меньше. Думаю стоит расслабится, я сам предлагал несколько вещей для синтаксиса и прочитывал от других, но ничего из этого не было добавлено. Выход - пишите свои функции, выкладываете на форуме, делаете список-подборку функций, пользуетесь не напрягая автора.

0

16

AZJIO написал(а):

В том то и дело чтобы сделать это должно работать на 3-х ОС, а не только на WinAPI

Теперь ясно. Далеко пойдем с оглядкой на оси.

AZJIO написал(а):

пользуетесь не напрягая автора.

В чем напрягать? Или он слушает только тех, кто купил программу?

0

17

Пётр написал(а):

Дело в том что суррогатная пара это 4 байта, а не 2.

А нет ди примера набора символов? Как-то я упустил этот вопрос.

0

18

egons
Почитай про UTF16 - коротко и точно.

0

19

AZJIO написал(а):

egons
Почитай про UTF16 - коротко и точно.

Читал. Меня смущает пример, который привел Пётр:
https://www.purebasic.fr/english/viewto … 17#p621917
зачем переменная типа qword?

0

20

egons написал(а):

зачем переменная типа qword?

наверно чтобы влезло 4 байта, то есть 32 бита.

0

21

Не много ли размахнулись? я для Utf-16 еле нашел один шрифт, да и тот выглядит не очень

0


Вы здесь » PureBasic - форум » OffTop » PureBasic 6.20