|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||||||
Изучение основ FreeBasic в сравнении с PowerBasic10.10.2022, 22:17. Показов 24167. Ответов 218
Метки freebasic;изучение основ (Все метки)
Всем добра и мира!
К сожалению, PowerBasic прекратил своё развитие вследствие смерти его создателя и главного (а скорее всего, единственного) разработчика Роберта Зейла в 2012-ом году. К настоящему времени последние надежды на его развитие окончательно угасли. В связи с этим я решил приступить к изучению основ FreeBasic'а. В этой ветке форума буду задавать вопросы, возникающие у меня в процессе ознакомления с этим ЯП. Как говорится, всё познаётся в сравнении. Ну вот и буду изучать FreeBasic, опираясь на определённый опыт ЛЮБИТЕЛЬСКОГО программирования на PowerBasic'е. Буду очень благодарен за любую помощь. Итак, первый возникший у меня вопрос. Каким образом в структурах FreeBasic'а появилась возможность использовать динамические строки? В PowerBasic'е это строго запрещено. Можно использовать только строки фиксированной длины. Вот 2 работающих (с одним и тем же результатом на консоли) кода для сравнения: FreeBasic
1
|
|||||||||||
| 10.10.2022, 22:17 | |
|
Ответы с готовыми решениями:
218
|
|
|
|||||||||||||||||
| 31.10.2022, 01:51 | |||||||||||||||||
Разве PowerBasic не создает lib файл?
2
|
|||||||||||||||||
|
COM‐пропагандист
|
|
| 31.10.2022, 16:55 | |
|
Что‐то у вас гигантские екзешники получаются.
Вот DLL размером 2560 байт и исполняемый файл 5632 байта:
1
|
|
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||
| 31.10.2022, 17:04 [ТС] | |||||
![]() ![]() Да и в логе про это ничего не говорится:
0
|
|||||
| 31.10.2022, 17:05 | ||
|
Не по теме:
0
|
||
|
|
||||||||
| 31.10.2022, 17:15 | ||||||||
Судя по скринам используете PureBasic x64, а dll x86. Разрядность exe и dll должна быть одинаковой. Соберите в PowerBasic x64 dll или используйте x86 версию PureBasic.
1
|
||||||||
|
COM‐пропагандист
|
||
| 31.10.2022, 17:37 | ||
|
Во‐вторых, VB6 загружает все библиотеки из Declare динамически, с тем же успехом можно в тексте прописывать LoadLibrary + GetProcAddress.
1
|
||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||||
| 31.10.2022, 17:50 [ТС] | ||||
|
При запуске вашего эксешника выскакивает сообщение "21". Хотя мне этот фокус повторить почему-то не удаётся. Вроде бы компилирую тот же самый исходник, потом запускаю эксешник из той же самой папки, а мне пишут "нет dll". Наверно, у нас настройки разные. ![]() Добавлено через 4 минуты
0
|
||||
|
|
||||
| 31.10.2022, 18:10 | ||||
|
1
|
||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||
| 01.11.2022, 16:10 [ТС] | |||
![]() Быстро или медленно, это пофиг ![]() Я же только-только приступил к изучению самых первых элементов нового для меня языка, можно сказать, в первый класс пошёл ![]() А ВУЗ и академия это уже потом будет.. ну если вообще будет ![]() Динамически, статически... чуть медленнее, чуть быстрее ... да какая мне сейчас разница?! Хоть как-то работает, ну вот и слава богу ![]() Ну просто у меня никогда не было возможности программировать в формате х64, ну вот я и дорвался, как говорится
0
|
|||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||
| 10.11.2022, 16:21 [ТС] | ||
|
У меня начинает складываться впечатление, что FreeBasic гораздо беднее PowerBasic'а относительно своих "внутренних" средств. Ну вот, например, в PowerBasic'е имеется большой набор функций работы с массивами и в частности функции сортировки массивов.
Допустим, у нас имеется некоторый массив строк и мы хотим упорядочить их по алфавиту, ну или массив чисел хотим упорядочить по возрастанию. В PowerBasic'е это делается "лёгким движением руки" с помощью ARRAY SORT. Да там ещё и TAGARRAY можно прицепить, который будет упорядочиваться синхронно с "главным" сортируемым массивом. Ну то есть, например, имеем массив имён некоторых лиц и массив их возрастов. Оставляем сейчас за рамками обсуждения, что это можно реализовать с помощью структур/UDT. Не хотим и не умеем ![]() Хотим именно два массива. Хотим упорядочить имена по алфавиту, ну и так, чтобы и возраста тоже соответствовали именам. Ну вот, пожалуйста, полный набор инструментов:
А вот в справочной системе FreeBasic'а я ничего подобного не обнаружил. Может быть плохо искал? Или здесь такая политика, что "внутри" только необходимый минимум, а все "тонкие настройки" выполняются с помощью подключаемых библиотек, так что ли? Или это у меня ошибочное впечатление?
0
|
||
|
COM‐пропагандист
|
||||||||
| 10.11.2022, 21:21 | ||||||||
|
Потом туда добавили юникодные строки и цвета с прозрачностью. Потом добавили ООП, но не всем это понравилось. А библиотека так и осталась с функциями из QBASIC. FreeBASIC
1
|
||||||||
|
COM‐пропагандист
|
|||||||
| 11.11.2022, 09:25 | |||||||
1
|
|||||||
|
|
|||
| 11.11.2022, 13:37 | |||
|
1
|
|||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||||||||||||
| 11.11.2022, 17:10 [ТС] | ||||||||||||
|
- Basic для МК "Электроника" - ZX-Spectrum-Basic + немного ассемблера для ускорения работы программ - древний PowerBasic под MS-DOS - VisualBasic 5.0 и 6.0 - PowerBasic под Windows Ну вот собственно и всё ![]() Вот допустим "родная" функция MsgBox в PowerBasic'е. Я устанавливаю на неё курсор, нажимаю F1, и мне высвечивается всё её "жизнеописание" ![]() А когда всё это разбросано по разным "библиотекам", откуда мне знать, что в какой искать и как с найденным обходиться? ![]() ![]() Ну нет, я понимаю, что какие-то сложные сложности (относительно редкие WinAPI функции, COM-программирование) требуют обращения к сторонним средствам. Ну уж здесь-то такой пустяк, простая сортировка строкового массива по алфавиту. И давай иди побирайся по всем библиотекам? ![]() Я же сейчас изучаю самые-самые основы, и мне не хотелось бы прямо сейчас нырять в такие глубины, чтобы самому себе отбить всякую охоту продолжать изучение. Я уж тогда лучше простым пузырьковым методом из каменного века массив отсортирую ![]() ![]() ![]() Не проще ли тогда с него и начать? ![]() Да это так же легко как стакан воды выпить. И по внешним библитотекам не надо ходить побираться ![]() Доказательство прилагаю. И обратите внимание, в исходнике нет ни одного инклюда! Всё выполнено с помощью только встроенных средств самого языка. PowerBasic
0
|
||||||||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||
| 11.11.2022, 21:53 [ТС] | |||
![]() Разумеется, гораздо логичнее и проще... с точки зрения относительно продвинутого юзера. Но я же написал несколькими постами выше: Для тренировки начал писать на FB самую-самую простую программу, - подсчитываем частоту вхождений различных букв и цифр в любом текстовом файле и выводим результаты на консоль или в другой текстовый файл. Всё уже готово, всё уже работает, и меня даже приятно удивило то, что синтаксисы FB и PB на этом уровне (работа с файлами и со строками) соответствуют друг другу практически один в один. Но вот остался один последний штрих - вывести результаты не абы как, а в приоритетном порядке, ну то есть наиболее частые символы на самом верху, ну и так далее в порядке убывания. Ну вот и появилась потребность в сортировке массива. И теперь, как выясняется, для такой рутинной (для PB) задачи в FB надо привлекать на помощь сишные библиотеки. Ну а сам-то компилятор почему на это не способен?! У многочисленных разработчиков FB по сравнению с покойным Бобом Зейлом (одиночкой!) была фора аж целых 10 лет. Что они делали всё это время? ![]() Не по теме: Не будь это бесплатным продуктом, я бы подумал, что они распилили выделенные средства, как сейчас модно это делать :) Честно говоря, у меня уже начинает складываться впечатление, что я вошёл не в ту дверь ![]() Как сказал бессмертный классик, шёл в комнату, попал в другую ![]() В связи с этим у меня лично к вам вопрос, как к общепризнанному эксперту PureBasic'а. Там в PureBasic'е точно такая же хрень, что по любому пустяку надо бежать за помощью в сторонние библиотеки или же это относительно самодостаточный компилятор, похожий в этом отношении на компилятор PowerBasic'а?
0
|
|||
|
|
||||||||||||
| 11.11.2022, 22:12 | ||||||||||||
|
Функции PureBasic перечислены в правой колонке справки https://www.purebasic.com/documentation/ Сортировка есть https://www.purebasic.com/docu... index.html
1
|
||||||||||||
|
COM‐пропагандист
|
||||||||||
| 11.11.2022, 23:03 | ||||||||||
|
Стандартная библиотека — это функции для конкретного языка программирования. Стандартная библиотека Библиотеки могут быть динамически подгружаемыми. Это значит, что их код находится не в вашем екзешнике. А могут быть статическими. Это значит, что компоновщик копирует их код в ваш исполняемый файл. https://www.gunsmoker.ru/2013/... 3527040567 Открою секрет: для компилятора нет никакой разницы между вызовом си‐функции и функции из винапи или написанной вами функции, или функции из библиотеки фрибесика. Компилятор просто ставит вызов функции и отправляет ей параметры в установленном порядке. Больше его ничего не заботит и заботить не должно. Вообще, дискриминация и уничижение функций по происхождению очень свойственна людям, однако компилятор лишён таких экзистенциальных размышлений и психологических переживаний вроде «эта функция плохая, потому что она нестандартная», «эта функция написана на другом языке программирования, фу‐фу‐фу» или «вызов функции из чуждого мне языка сделает мой исходный код менее бейсиковым». Потому что на уровне процессора любая функция работает одинаково. Это вообще стандартная терминология из программирования. Не нужно выдумывать свою терминологию, можно использовать общепринятую. Компилятор никакие функции не пишет, компилятор только ставит вызов функции из библиотеки. Библиотеку функций делают программисты. Они не включили в стандартную библиотеку функцию сортировки потому что: а) им лень или некогда; б) функция сортировки уже есть в сишной библиотеке, и дублировать её незачем. Вы переживаете насчёт того, что в скомпилированный фрибесиком файл попадёт сишная библиотека? Можете не переживать, она всегда туда попадает, потому что сами функции фрибесика написаны на си и вызывают сишные функции внутри себя, стартовая точка программы берётся из сишной библиотеки. Добавлено через 6 минут
1
|
||||||||||
|
|
||
| 11.11.2022, 23:28 | ||
|
Замабувараев, чем If не понравился?
0
|
||
|
COM‐пропагандист
|
|||
| 12.11.2022, 09:34 | |||
|
А когда есть какой‐то диапазон и выбор из более двух значений, то логично использовать оператор выбора чемоданов.
0
|
|||
| 12.11.2022, 09:34 | |
|
Лабораторная работа на изучение основ работы с debug.exe Лабораторная работа(Изучение основ.Одномерный и двумерный массивы.Процессы) Проблема с Imagelist в PowerBasic 10 FreeBASIC Уйти с freebasic Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|