|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||||||
Изучение основ FreeBasic в сравнении с PowerBasic10.10.2022, 22:17. Показов 21974. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования?
Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная.
Где разрыв
. . .
|
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно»
Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
|
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую:
Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
|
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий?
Да, такие данные есть, и они хорошо описаны и в российской,. . .
|
|
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу:
https:/ / github. com/ altbodhi/ ReConMan
По итогу пришел к мысли, что DU не дружат с существующими технологиями.
От сериализации до отображения в реляционную. . .
|
Администрация Хабра удаляет новые энрегоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерировавны.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
|
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
|
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2.
Задача: контроль уникальности строк в. . .
|