|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||||||
Изучение основ FreeBasic в сравнении с PowerBasic10.10.2022, 22:17. Показов 21994. Ответов 218
Метки freebasic;изучение основ (Все метки)
Всем добра и мира!
К сожалению, PowerBasic прекратил своё развитие вследствие смерти его создателя и главного (а скорее всего, единственного) разработчика Роберта Зейла в 2012-ом году. К настоящему времени последние надежды на его развитие окончательно угасли. В связи с этим я решил приступить к изучению основ FreeBasic'а. В этой ветке форума буду задавать вопросы, возникающие у меня в процессе ознакомления с этим ЯП. Как говорится, всё познаётся в сравнении. Ну вот и буду изучать FreeBasic, опираясь на определённый опыт ЛЮБИТЕЛЬСКОГО программирования на PowerBasic'е. Буду очень благодарен за любую помощь. Итак, первый возникший у меня вопрос. Каким образом в структурах FreeBasic'а появилась возможность использовать динамические строки? В PowerBasic'е это строго запрещено. Можно использовать только строки фиксированной длины. Вот 2 работающих (с одним и тем же результатом на консоли) кода для сравнения: FreeBasic
1
|
|||||||||||
| 10.10.2022, 22:17 | |
|
Ответы с готовыми решениями:
218
|
|
COM‐пропагандист
|
|
| 13.11.2022, 16:30 | |
|
0
|
|
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||
| 13.11.2022, 16:41 [ТС] | |||||||
|
Вы поймите, я нахожусь в процессе выбора нового для себя ЯП. Хочется сделать это с минимальными издержками. Ну а для этого этот новый язык должен быть наиболее близок к моему основному, ну то есть к PowerBasic'у. На самом деле, в идеале, прикрутить бы к PowerBasic'у 64 бита, и ничего другого мне уже не надо для "полного счастья" в плане набора инструментов для программирования. Но это, увы, не возможно и уже никогда не будет возможно. Буржуи с PowerBasic-форума массово потянулись именно к FreeBasic'у. Ну вот и я вроде бы вместе с ними по течению плыву ![]() Вроде бы считается, что FreeBasic по синтаксису близок к PowerBasic'у. Замечательно! Ну а как это определить? Только с помощью эксперимента, правильно? Ну вот я и беру свои самые простые программы на PowerBasic'е, тупо скармливаю их компилятору FreeBasic'а, и анализирую, какие ошибки он покажет ![]() Вот именно такой подход "к телу" и стал первоосновой рождения этой ветки ![]() Ну и да, действительно, многие встроенные функции совпадают практически один в один. Например, работа со строками. В PowerBasic'е это Left$, Right$, Mid$, Trim$, ну дальше длинный список, все перечислять здесь не имеет большого смысла. А во FreeBasic'е это аналогичные по смыслу и по своей работе функции, но только записанные без знака доллара. Ну и вот при попытке скомпилировать такую команду компилятор, разумеется, показывает ошибку на такой-то строке. Убираю знак доллара и компилирую снова. Ошибка уже на какой-то строке ниже, ну и таким вот образом продолжаю двигаться ниже и ниже. Работа с файлами почти идентична. Те же самые Open, Close, Input, Output, ну и всё остальное. If, Select Case и всевозможные циклы тоже совпадают один в один. Единственная разница в циклах - это вместо Iterate в PowerBasic'е во FreeBasic'е используется Continue. Ну то есть тоже почти один в один кроме такой вот "мелочёвки". Работает так же, только называется по другому. Но вот в процессе такого вот экспериментального последовательного компилирования и внесения поправок дохожу до какой-то "фишки", которая свойственна только PowerBasic'у, ну например, POWERARRAY Object. Ну и как это "обойти"? Вот именно отсюда и возникла мысля использовать для таких случаев DLL в качестве обходного маневра ![]() Я же не просто так (ну типо, от скуки) задавал вопрос по DLL выше по теме, а именно в поисках обходных лёгких путей ![]() Ну а теперь, зачем я это всё так длинно рассказываю? Да чтобы попытаться объяснить, что мне эти вызовы "левых" функций, вот прямо сейчас совершенно не нужны. Я же сейчас сравниваю именно встроенные средства двух ЯП, а вовсе не их способности вызывать "левые" функции. Уж в зтом-то они точно равны друг другу, я ни минуты в этом не сомневаюсь ![]() ![]() Мне-то как раз хотелось бы подобрать для себя новый ЯП с "низким порогом входа". ![]() Ну вы же сами написали, что это функция из Си, ну вот я и пишу "сишная функция" ![]() Ну вы просто проявите снисходительность. Вы сейчас общаетесь не с профессионалом, а с дилетантом. И если он (дилетант), например, говорит "море", то под этим он может понимать и "озеро", и "океан". Ну не будьте так уж строги к используемой мною терминологии ![]() Воспринимайте все мои слова в более широком смысле, с учётом всевозможных огрехов непрофессионала ![]() ![]()
1
|
|||||||
|
|
||||
| 13.11.2022, 17:18 | ||||
|
1
|
||||
|
COM‐пропагандист
|
|||
| 13.11.2022, 17:59 | |||
|
0
|
|||
|
|
||||||
| 13.11.2022, 18:04 | ||||||
![]() Покажите пример работы с реестром на QB. Очень интересно посмотреть. ![]()
1
|
||||||
|
COM‐пропагандист
|
|||
| 13.11.2022, 18:11 | |||
|
Итого: за 10 минут можно выучить все 68 ключевых слов, ещё за час — всю стандартную библиотеку. Вот и весь язык. https://www.freebasic.net/wiki/CatPgFullIndex Добавлено через 6 минут А тут вдруг удивило, что для этого примера нужно поставить вайн. Почему? В чём разница? Вайн — такая же библиотека, как и все остальные.
2
|
|||
|
|
||
| 13.11.2022, 18:23 | ||
|
А если все равно не поняли, попробуйте из вайна получить доступ к USB и откроете для себя что его нет как и к остальному железу!
0
|
||
|
COM‐пропагандист
|
|
| 13.11.2022, 18:39 | |
|
0
|
|
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||||||||||||||
| 14.11.2022, 17:25 [ТС] | ||||||||||||||
![]() Ну да, Python сейчас в тренде, я знаю. По поводу Tcl я погуглил. Скриптовый язык. Тогда уж джаву можно изучать. Но мне на джаву переходить психологически очень дискомфортно, потому что много лет назад, когда был выбор между бейсиком, паскалем и джавой я выбрал бейсик. И если сейчас начать изучать джаву, то это как бы признать свою ошибку. А кто из нас любит признавать свои ошибки? ![]() Допью уж до дна свою чашу ![]() Ну в смысле, чашу бейсика ![]() Как известно, всё познаётся в сравнении. Ну вот я сейчас и занимаюсь тем, что сравниваю два языка. Во многом они схожи, но есть и различия. Ну вот это и есть одно из различий. Просто я запомню, что встроенной сортировки массивов во фрибейсике нет и для этой цели надо вызывать стороннюю функцию. Вы понимаете, это две совершенно разные ситуации: 1. Разрабатывать относительно большую серьёзную программу и при этом столкнуться с какой-то проблемой, которую хочется поскорее решить, чтобы не сбавлять скорости общей разработки. И так попробовал, и эдак, ну никак не получается. Единственная надежда - спросить совет на форуме. Спросил, посоветовали, проблема решена, продолжил разработку. Я часто бывал в такой ситуации, мне это очень даже знакомо. 2. Но сейчас у меня совершенно другая ситуация. Я никуда не спешу. Просто, не спеша, занимаюсь сравнением двух языков. Как я написал выше, начал писать на фрибейсике тренировочную утилиту, которая считывает содержимое текстового файла и подсчитывает число вхождений различных букв и цифр. Ну а когда всё уже было готово, решил добавить вишенку на торт ![]() Ну в смысле, не просто вывести результат на консоль или в файл, а ещё и в упорядоченном по статистической частоте порядке. Ну вот и столкнулся с проблемой сортировки массива. Но это именно тренировочная программа. У меня нет никакой необходимости её завершать. ![]() Хотя всё-таки я буду стремиться к тому, чтобы почаще обходиться без них. Если не слишком углубляться в детали. то всё выглядит очень знакомым ![]() Ну вот например: PowerBasic
А звёздочка в PowerBasic'е, насколько мне известно, вообще не используется применительно к указателям. ![]() Если я ничего не путаю, ActiveX и СОМ это синонимы. Честно говоря, практического опыта написания СОМ-серверов у меня, конечно же, нет, но я сегодня немного почитал на эту тему. Как я понял, это, в принципе, обычные DLL, но только подчиняющиеся СОМ-спецификациям и ещё их надо регистрировать в реестре, но это не сложно. А что касается СОМ-спецификаций, то, как я понял, вообще все объекты, создаваемые в среде PowerBasic'а уже по умолчанию соответствуют требованиям СОМ. Так что с этой стороны проблем вроде бы возникнуть не должно. Проблемы могут быть только с принимающей стороны ![]() Ну в смысле, со стороны FreeBasic'а. Теперь у меня вся надежда на Замабувараева. Не зря же у него над аватаркой написано, что он COM-пропагандист
1
|
||||||||||||||
|
|
|||
| 14.11.2022, 18:05 | |||
|
Попробуйте и увидите. https://www.cyberforum.ru/blog... g5213.html
1
|
|||
|
|
|||
| 14.11.2022, 19:27 | |||
|
Короче придется с кишочками иметь дело.. Скриптовый это да, но это всего лишь обертка над сишной библиотекой. При этом язык ну совсем не пытается быть похожим на си. Да и экзешник можно получить если сильно хочется. Скриптовость и позволяет творить вещи немыслимые в других языках. Но не будем об этом в этой теме, ведь бэйсик наше всё. Конечно нет ничего идеального, но инструмент выбирают как бы по тому, что он умеет делать.
2
|
|||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||||||||||||
| 15.11.2022, 15:45 [ТС] | ||||||||||||
Хотя это может быть написано просто для красного словца. Что-то вроде рекламы ![]() Но там, по идее, должно быть не сложно. Везде же дизайнеры форм. Создать окно не проблема, текстбокс с полосами прокрутки и с wordwrap-ом на форме разместить тоже не проблема. Код автоматически напишется. Ну а дальше: PowerBasic
![]() На самом деле, я сейчас краем глаза посматриваю и на PureBasic тоже. Немного пугает, что там, как я понял, совсем нет ООП. Вместо объектов там вроде бы модули. Как я понимаю, главное назначение у объектов и у модулей одинаковый, - инкапсуляция. Не то чтобы я был такой уж страстный поклонник ООП. Раньше меня это отпугивало. Но со временем вроде бы "притерпелся" ![]() Класс такой-то, интерфейс такой-то, ну а дальше всё как обычно, но только процедуры обзывают "методами", а переменные "свойствами" ![]() А кстати, интересно, в PureBasic экспортировать COM-компонент из PowerBasic'а получится? Вроде бы должно получится. Там же уже не в виде объектов будет передаваться, а в виде нативного кода.
0
|
||||||||||||
|
|
|||||
| 15.11.2022, 16:17 | |||||
|
Я не зря писал что FreeBasic такой же хардкорный как Си. Встроенных средств нет (не считая интерфейсов), потому что COM только в Windows. В Linux и MacOS X его нет.
1
|
|||||
|
Модератор
|
||
| 15.11.2022, 17:24 | ||
|
1
|
||
| 15.11.2022, 17:27 | ||
|
Вопрос ч-ка, тупого в библиотекахи и библиоведении вообще.
1) Можно ли в каком либо Бейсике подключить библиотеку так, чтобы стали доступны все функции, как свои? 2) То что в VB подключается через референсы это все COM-овское? 3) Может ли COM библиотека также быть "процедурной"? Добавлено через 2 минуты
1
|
||
|
Модератор
|
||||
| 15.11.2022, 17:30 | ||||
|
2
|
||||
| 15.11.2022, 17:30 | |
|
Лабораторная работа на изучение основ работы с debug.exe Лабораторная работа(Изучение основ.Одномерный и двумерный массивы.Процессы) Проблема с Imagelist в PowerBasic 10 FreeBASIC Уйти с freebasic Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание:
как одно здание порождает конфликты требований,
которые никто не планировал
Материалы для обсуждения с МГСУ · 2026
Рисунки внутри приложенного ворд файла.
Что за. . .
|
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
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
|