|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||||||
Изучение основ FreeBasic в сравнении с PowerBasic10.10.2022, 22:17. Показов 22681. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|