Сайт | Скачать | Видео | Wiki

Автор Тема: PureBasic  (Прочитано 16577 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33989
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: PureBasic
« Ответ #45 : 18 Январь 2021, 13:18:13 »
xchm-1.31-2008-sf01.pfs - для чтения chm справки

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 298
  • Репутация: +10/-0
Re: PureBasic
« Ответ #46 : 18 Январь 2021, 17:18:03 »
Посмотрите пример создания графиков (добавил адаптацию для Linux)

Оффлайн pureproft

  • Модератор
  • Старожил
  • ****
  • Сообщений: 228
  • Репутация: +6/-1
Re: PureBasic
« Ответ #47 : 18 Январь 2021, 17:53:58 »
Как посмотреть? Прочитать или скомпилить?

Я только хотел после предыдущего сообщения спросить? А оно вообще кому нужно?
В этой теме(разделе) 90% должно публиковаться исходников, которые тот, кому интересно сам себе скомпилит. ИМХО во всех остальных случаях раздел закрыть и забыть о том, что он был.
« Последнее редактирование: 18 Январь 2021, 18:06:47 от pureproft »
fRUgal OS  ...читаю между букв...

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33989
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: PureBasic
« Ответ #48 : 18 Январь 2021, 18:03:56 »
В идеале исходник + бинарник (лучше пакет). Далее заинтересованные обсуждают и дорабатывают прогу с автором. Мне так видится раздел. И про таймер (в соседней теме) все идет как надо

Чтобы наши стали сами программить.... Вряд ли. Как минимум надо много рабочих примеров...
Что касаемо меня. Посмотрел и PB и по твоей наводке freebasic
Пока пришел к выводу, что для моих скромных задач и yad+gtkdialog достаточно

Оффлайн pureproft

  • Модератор
  • Старожил
  • ****
  • Сообщений: 228
  • Репутация: +6/-1
Re: PureBasic
« Ответ #49 : 18 Январь 2021, 18:15:20 »
Ну freebasic он как говорится и в африке freebasic.
О нём все давно знают. Моя наводка была на https://sourceforge.net/projects/guiwindow9/
Со временем проект не торопясь обретает черты вполне работоспособные.
Главная особенность его, это организация цикла оконных событий аналогично Purebasic и также одинаково для Win и Lin
И автор соотечественник puppyrus. :)

P.s. И лицензии puppyrus,freebasic,window9 не противоречат друг другу.
« Последнее редактирование: 18 Январь 2021, 18:18:53 от pureproft »
fRUgal OS  ...читаю между букв...

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 298
  • Репутация: +10/-0
Re: PureBasic
« Ответ #50 : 18 Январь 2021, 19:00:37 »
Прочитать или скомпилить?
Скопировать код, кинуть в IDE, нажать F5. Компилировать пример, а тем более пакет не имеет смысла. Я привёл скрин как это выглядит, так что предпросмотр без каких либо заморочек, если нравиться, тогда уже использовать это для каких то целей. В отличии от AutoIt3 на PureBasic я ещё учусь и любые интересные вещи хочется и попробовать и показать достигнутое.
На AutoIt3 даже программу расчёта конденсатора делал

и скрины примеров

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 298
  • Репутация: +10/-0
Re: PureBasic
« Ответ #51 : 18 Январь 2021, 21:44:34 »
Читал от автора, что freebasic планировался стать платным. И повторюсь бесплатность не должна быть выбором.

Оффлайн pureproft

  • Модератор
  • Старожил
  • ****
  • Сообщений: 228
  • Репутация: +6/-1
Re: PureBasic
« Ответ #52 : 18 Январь 2021, 22:14:55 »
Читал от автора, что
Автора чего и где?
https://github.com/freebasic/fbc
    The FreeBASIC compiler (fbc) is licensed under the GNU GPLv2 or later.

    The FreeBASIC runtime library (libfb and the thread-safe version, libfbmt)
    and the FreeBASIC graphics library (libfbgfx and the thread-safe version,
    libfbgfxmt) are licensed under the GNU LGPLv2 or later, with this exception
    to allow linking to it statically:
        As a special exception, the copyright holders of this library give
        you permission to link this library with independent modules to
        produce an executable, regardless of the license terms of these
        independent modules, and to copy and distribute the resulting
        executable under terms of your choice, provided that you also meet,
        for each linked independent module, the terms and conditions of the
        license of that module. An independent module is a module which is
        not derived from or based on this library. If you modify this library,
        you may extend this exception to your version of the library, but
        you are not obligated to do so. If you do not wish to do so, delete
        this exception statement from your version.

p.s. Какое отношение платность или бесплатность имеет к моей фразе "И лицензии puppyrus,freebasic,window9 не противоречат друг другу."?
« Последнее редактирование: 18 Январь 2021, 22:17:14 от pureproft »
fRUgal OS  ...читаю между букв...

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 298
  • Репутация: +10/-0
Re: PureBasic
« Ответ #53 : 23 Январь 2021, 22:23:26 »
Где что надо покрутить, чтобы прога из gtk3 стала qt5 (а qt4 можно?)
На счёт шпаргалки, я добавил в шапку ссылку на оригинальный пост от mk-soft
Подкрутка - в настройках компилятора "Компилятор -> Настройки компилятора ... -> Библиотека подсистемы" указать qt или gtk2 или ничего не указывать и будет gtk3. Мой последний исходник StopwatchTimer (linux+) или StopwatchTimer (linux+2) не запускаются с qt, а начальный исходник StopwatchTimer.pb запустился. Компилируется на 60кб увеличение. Пока ещё не пробовал, требуется ли библиотеки qt или точнее ставится ли qt подсистема в стандартный дистрибутив или надо прописывать зависимости и какая нибудь утилитка весом в 200 кб потянет 30-40 Мб библиотек подсистемы qt.
« Последнее редактирование: 23 Январь 2021, 22:33:05 от AZJIO »

Оффлайн Petr

  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
Re: PureBasic
« Ответ #54 : 26 Январь 2021, 23:38:30 »
то есть нельзя что-то сделать красиво не прибегая к WinAPI
Не во всех приложениях нужны красивости. Минимально необходимой набор контролов присутствует в кроссплатформенной библиотеке https://www.purebasic.com/documentation/gadget/index.html
https://www.purebasic.com/documentation/dialog/index.html

На канвасе разработан не один контрол и обычно они платформонезависимые.

соответственно почти ни одна прога не будет в легкую переделана под другую платформу
Количество платформозависимого кода обычно незначительно по сравнению с объемом кода программы.

нельзя делать оболочку, то есть тупо можно было бы на PureBasic написать библиотеку бесплатную и вызывать из неё все функции, которые содержаться в PureBasic, вот это нельзя, так как покупка PureBasic теряет смысл.
Нельзя писать обвертку над функциями.
Код
ProcedureDLL Open_Window(Window, x, y, InnerWidth, InnerHeight, Title$, Flags, ParentWindowID)
  ProcedureReturn OpenWindow(Window, x, y, InnerWidth, InnerHeight, Title$, Flags, ParentWindowID)
EndProcedure

ProcedureDLL CloseWindow(Window)
  ProcedureReturn CloseWindow(Window)
EndProcedure
придётся серьёзно перелапачивать код
Если в коде есть платформозависимый код. Библиотека PB кроссплатформенная.

Не такой в пб простой синтаксис. Если вообще не в теме пб- не проще ли будет изучить Си (без плюсов)...
В Си нет строк. Элементарные действия потребуют много усилий. PB хорош тем что изначально поддерживает строки, динамические и ассоциативные массивы, двусвязные списки и др. Их применение возможно в структурах. И все это без явного использования указателей. Для примера Сканирование папки компилятора и отображение древовидной структуры файлов.
Код
Structure FileList
  N.s ; Имя файла
  S.q ; Размер файла
EndStructure
 
Structure TreeFiles
  DN.s                ; Имя текущей папки.
  List D.TreeFiles() ; Список вложенных папок текущей папки.
  List F.FileList()  ; Список файлов текущей папки.
EndStructure
 
EnableExplicit
 
Procedure ScanDisk(List Tree.TreeFiles(), Dir.s) ; Сохранение структуры указаной папки
  Protected ID, Name.s
   
  ID = ExamineDirectory(#PB_Any, Dir, "*.*")
  If ID
   
    While NextDirectoryEntry(ID)
     
      If DirectoryEntryType(ID) = #PB_DirectoryEntry_File ; Файл
       
        If AddElement(Tree()\F())
          Tree()\F()\N = DirectoryEntryName(ID)
          Tree()\F()\S = DirectoryEntrySize(ID)
        EndIf
       
      Else ; Папка
       
        Name = DirectoryEntryName(ID)
        If Name<>"." And Name<>".."
         
          If AddElement(Tree()\D())
            Tree()\D()\DN = Name
            ScanDisk(Tree()\D(), Dir+Name+"/") ; Рекурсивный вызов процедуры
          EndIf
         
        EndIf
       
      EndIf
    Wend
   
    FinishDirectory(ID)
  EndIf
 
EndProcedure
 
Procedure SetTreeGadget(Gadget, List Tree.TreeFiles(), Depth)
 
  If Tree()\DN<>""
    AddGadgetItem(Gadget, -1, Tree()\DN, 0, Depth)
    Depth+1
  EndIf
 
  ForEach Tree()\D()
    SetTreeGadget(Gadget, Tree()\D(), Depth)
  Next
 
  ForEach Tree()\F()
    AddGadgetItem(Gadget, -1, Tree()\F()\N+"    ("+Tree()\F()\S+")", 0, Depth)
  Next
 
EndProcedure
 
Define NewList Tree.TreeFiles()
 
AddElement(Tree())
ScanDisk(Tree(), #PB_Compiler_Home)
 
If OpenWindow(0, 0, 0, 500, 300, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TreeGadget(0, 0, 0, 500, 300)
  SetTreeGadget(0, Tree(), 0)
  ClearList(Tree()) ; Очистка списка с освобождением всех данных.
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Список D имеет тип структуры в которой расположен, а это значит что каждый элемент списка содержит аналогичный список D, т. е. возможна практически неограниченная вложенность. Это позволяет получить древовидную структуру хранения данных.

Надо максимально привлечь к нам тех, кто уже в теме пб
Сложность в том что почти все они и я в том числе пишут под винду.
Это из-за большей распространенности винды и сложности поиска информации по API Linux. Для винды несложно найти описание и примеры WinAPI, чего не скажешь про линукс...

Только вот оптимален ли pb для изучения по сравнению с другими языками для наших нужд (написание гуй к консольным утилитам)
Зависит от решаемых задач. Пример с GUI и многопоточностью рассчитывающий различные хеши. https://www.cyberforum.ru/beta-testing/thread1576230.html


Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33989
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: PureBasic
« Ответ #55 : 27 Январь 2021, 10:04:53 »
    Надо максимально привлечь к нам тех, кто уже в теме пб
Сложность в том что почти все они и я в том числе пишут под винду.
Не пробовали запускать под wine ?
Тем не менее Вы сюда добавились. Может что-то и получится  ;)
В Си нет строк. Элементарные действия потребуют много усилий
Почему тогда он более популярен? Насколько я понял еще появился go - где попроще с написанием и кроссплатформенностью. Бинарники большеваты, но почти без зависимостей и быстрые. Только на нем больше что-то системно-консольное пишут типа torrserve
Для винды несложно найти описание и примеры WinAPI, чего не скажешь про линукс...
Именно под пб? Странно. У линукса же исходники открытые...

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 298
  • Репутация: +10/-0
Re: PureBasic
« Ответ #56 : 27 Январь 2021, 12:59:29 »
Не пробовали запускать под wine ?
В итоге писать под винду? А потом использовать wine? Тогда можно просто взять любую готовую прогу под винду.
Тем не менее Вы сюда добавились.
Потому что я написал тут
Почему тогда он более популярен?
Наверно потому что академический, потому что свободный, нет привязки к операционной системе, просто язык управления процом, а уж IDE в какой то мере разработанный под конкретную систему скомпилирует программный код с правилами исполняемого файла под конкретную систему. Это не язык для создания GUI, а скорее язык, на котором можно написать движок GUI. То есть на этом языке пишут движок, который потом будут использовать движки более высокого уровня. Ну хотя оба компилируют код на ассемблере, но движки GUI это не входит в язык как элемент языка, а как отдельные функции разработанные на этом же языке.
У линукса же исходники открытые...
исходники то открытые но они не пб.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33989
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: PureBasic
« Ответ #57 : 27 Январь 2021, 13:23:01 »
В итоге писать под винду?
Нет. Но если хотя бы под wine нужное запустится - лучше чем ничего. Но тут надо чтобы прямо совсем нужное и безальтернативное. Пока не знаю такого
Потому что я написал тут
спасибо+

Оффлайн Petr

  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
Re: PureBasic
« Ответ #58 : 27 Январь 2021, 13:38:55 »
Не пробовали запускать под wine ?
Многие приложения работают, но это не программирование для линукс.

Именно под пб?
Вообще. WinAPI не зависят от ЯП.

У линукса же исходники открытые
Это не помогает поисковикам находить требуемые системные функции по их описанию. Например по запросу
Цитата
WinAPI создать окно
легко найти функцию CreateWindow и ее описание в том числе на русском http://vsokovikov.narod.ru/New_MSDN_API/Window/fn_createwindow.htm
В линукс все сложнее. Нет определенной функции для создания окна, т. е. нет стандарта. Зависит от используемой библиотеки (одна из версий GTK или Qt). PB хорош тем что предоставляет минимальный набор платформонезависимых функций и чтобы создать окно не нужно думать какая используется функция в винде или линукс. В PB это функция OpenWindow https://www.purebasic.com/documentation/window/openwindow.html
Но набор библиотечных функций PB ограничен и если нужно больше, используются платформозависимые функции. В винде их обычно несложно найти, т. к. независимо от версии винды соблюдается стандарт WinAPI. В линукс все намного сложнее.

Почему тогда он более популярен?
Потому что С/С++ это стандарт в сфере программирования. На нем написано наверное 80% всех программ.
Компиляторы С/С++ есть почти под все платформы, чего не скажешь о других языках.

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 298
  • Репутация: +10/-0
Re: PureBasic
« Ответ #59 : 16 Март 2021, 03:30:09 »
Попробовал сделать видео как пример создания кода на PureBasic. Если скачать, то в плеере показывает лучше чем на youtube
« Последнее редактирование: 16 Март 2021, 03:31:46 от AZJIO »