Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Результаты опроса: Нужен ли раздел для FreeBasic
Определённо нужен 13 76.47%
В разделе нет необходимости 3 17.65%
Другой вариант(написать в теме) 1 5.88%
Голосовавшие: 17. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.54/105: Рейтинг темы: голосов - 105, средняя оценка - 4.54
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2

Создание раздела FreeBasic (голосование)

19.10.2012, 18:45. Показов 26173. Ответов 228

Студворк — интернет-сервис помощи студентам
Приветствую всех форумчан!

Многие из вас, наверное, заметили, что на форуме слишком мало подразделов языка Бейсик,
особенно если сравнивать с Паскалем и си, в которых существуют свободные реализации.

Именно поэтому предлагаю администрации cyberforum подумать над созданием нового
раздела для FreeBasic. Предполагаю, если появится раздел, появятся и новые пользователи,
которые будут поддерживать его, включая меня.

Однако безосновательно создавать раздел я не прошу, давайте посмотрим нужен ли он людям,
для этого, собственно и создаю данный топик. Люди проголосуют и всё будет видно.



Почему FreeBasic?
  1. Современный
  2. Свободный и бесплатный
  3. Кроссплатформенный(Windows, Linux)

Давайте посмотрим на функционал:

Описание: http://ru.wikipedia.org/wiki/FreeBASIC
Официальный сайт(Англоязычный): http://www.freebasic.net/
Ресурсы сети интернет по FreeBasic
Русскоязычные сайты:
http://freebasic.narod.ru/
http://freebasic.ru/
Статейка: http://www.tiflocomp.ru/docs/programming/fbc.php
IDE для FreeBasic(Англ.): http://fbide.freebasic.net/
Мануал по операторам\функциям: http://www.freebasic.net/wiki/... kka=DocToc
Архив с тулзами\библиотеками\туториалами: http://www.freebasic.net/___old_site/arch/

Частичная цитата:
FreeBASIC — язык программирования высокого уровня по синтаксису наиболее близкий к
QuickBasic ... Первоначально разрабатывался как свободная альтернатива Microsoft
QuickBasic, но быстро оброс новыми возможностями и стал мощным средством разработки.
  • Поддержка Unicode.
  • Множество встроенных типов переменных (Byte, UByte, Short, UShort, Integer, UInteger,
    LongInt, ULongInt, Single, Double, String, ZString, WString).
  • Типы данных определяемые пользователем (бесконечная вложенность, Union, тип поля
    (array, function, bit fields)).
  • Пространства имён.
  • Перечислимый тип (Enum).
  • Новые возможности при работе с массивами (до 2 ГБ размером, Redim Preserve).
  • Указатели (указатели на любые типы данных, неограниченная косвенная адресация).
  • Перегрузка функций и операторов.
  • Необязательные аргументы функций.
  • Встроенный ассемблер (ассемблерные инструкции в исходном коде программы).
  • Препроцессоры.
  • Typedefs.
  • Конструкторы и деструкторы классов.
  • Улучшенная графическая библиотека.

Моё мнение:

В целом, если полазить по интернету, можно понять, что у диалекта огромный потенциал.
Русских коммюнити FB не так уж и много, поэтому, было бы неплохо создать ветку и поддержать
разработчиков.


P.S. Я постарался донести информацию в объективной и понятной форме, надеюсь тема не
останется без ответа и голосов, всем спасибо за внимание .
9
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2012, 18:45
Ответы с готовыми решениями:

Создание статической библиотеки в FreeBasic
Есть непонятки со статической библиотекой. Код. Public Function Add2( ByVal x As Integer, ByVal y As Integer ) As String Return str(...

Создание блок-схемы FreeBasic - Basic
cls dim as single n,i input n screen 12 window (-200,-200)-(200,200) x1=-190 y1=-190 x2=190 y2=-190 x3=-190

Создание раздела D
Здравствуйте. После установки Windows 10, после создания второго раздела, он не отформатирован и без буквы. Я форматирую, но буква D не...

228
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
17.03.2020, 14:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от locm Посмотреть сообщение
Есть PureDispHelper
Есть, но надо чтобы версия совпала, или ручками править ошибки совместимости.
Не факт, что новые версии Пурика будут всегда совместимы.

Во FreeBasic тоже есть Disphelper, входит в стандартную поставку. Это надежнее.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
17.03.2020, 15:28
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Power_Basic, ну ты такой любитель, что я до сих пор не могу ...


Не, ну кроме шуток, профессионально я с программированием никогда не был связан, это просто одно из моих хобби, начиная ещё со времён Спектрум-бейсика.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Что за SAPI?
Цитата Сообщение от Замабувараев Посмотреть сообщение
SAPI — это вроде как синтезатор речи?
Цитата Сообщение от Quiet Snow Посмотреть сообщение
А так это Speech API )))
Ну да, это моя оплошность, согласен. Я же с этим малораспространённым языком живу последние годы как на острове
Волей-неволей приходится получать информацию исключительно из англоязычных источников, а там это сокращение очень сильно распространено:
https://forum.powerbasic.com/f... using-sapi

Ну получается, сглупил. Видать, и в этой ветке
Где можно увидеть объектную модель SAPI?
никто не отвечает, потому что не понимают, о чём же я вообще веду речь. Хорошо бы название подправить, но теперь ведь не разрешат это сделать, печаль

Цитата Сообщение от Quiet Snow Посмотреть сообщение
буквы в микрофон наговорить, по слоям нарезать, пусть говорит как пришибленный, зато своё,
Жесть!
Представляю, как это будет звучать
Но вообще-то идея очень интересная, и, пожалуй, это действительно единственный выход из положения, если нет под рукой никаких других средст для преобразования текста в речь.

Цитата Сообщение от Quiet Snow
Ну вообще всё, что касается COM, на FB это будет больно.
Цитата Сообщение от Замабувараев Посмотреть сообщение
Во‐первых, нет... Тоже нет. Всё проще:
Ну хотьтак
А то ведь собираешься переходить на новый язык, а тебя от него уже с самого порога отпугивают, дескать, приготовься, будет больно

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Таки Микрософт Бейсик великая сила! Для написания подобного на PureBasic мне понабилось страницу кодом исписать!
Чуть больше кода:
Visual Basic
1
2
3
4
Set SV = CreateObject("SAPI.SpVoice")
SV.Rate = -5 ' скорость речи от -10 до 10
SV.Volume = 100 ' громкость речи от 0 до 100
SV.Speak "Hi! I am your computer."

Цитата Сообщение от locm Посмотреть сообщение
Есть PureDispHelper который значительно упрощает код.
PureBasic
1
2
3
4
5
6
dhToggleExceptions(#True)
obj = dhCreateObject("SAPI.SpVoice")
If obj
 dhCallMethod(obj, "Speak (%T,%d)", @"PureBasic, feel the pure Power", 0)
 dhReleaseObject(obj)
EndIf
Ну это всё легко, пока не понадобится, например, использовать не голос, установленный на компьютере по умолчанию, а выбрать какой-нибудь другой. Ну это я уже научился делать.

Или требуется не выводить озвучку на динамик, а записывать аудиопоток в файл. И этому я тоже уже научился.

Ещё сложнее, если требуется записывать аудиопоток не в файл, а в оперативную память. А вот для решения этой "задачки" мне пришлось прочесать весь интернет. На русскоязычных ресурсах ответ не нашёл вообще, да и на англоязычных ответ удалось найти только в одном-единственном месте. Но там ответили на Си. Так что, выходит, это
Как вывести запись аудиопотока TTS в память?
уникальная ветка в своём роде

Или захочется использовать словари;
или требуется записывать сразу несколько аудиопотоков, чтобы можно было задействовать одновременно несколько ядер процессора (для ускорения работы при создании аудиокниги). А вот это делать я не умею совсем и даже не знаю, как к этому подступиться
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
17.03.2020, 15:48  [ТС]
Цитата Сообщение от Power_Basic Посмотреть сообщение
Представляю, как это будет звучать
Писал такое под DOS почти 20 лет назад, там если правильно в микрофон выговорить
не принципиально акцентированные буквы, а как они реально звучат, можно сносный
результат получить, даже вполне равноценный спичеру например семёрки(он на генераторе
по спектру построен, но нам растягивание звуков не нужно).
У десятки кортана, там другой уровень конечно. Не знаю сколько они там семплов
назаписывали(есть вероятность что каждое слово), но говорит довольно корректно.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Во FreeBasic тоже есть Disphelper
Щупал года три назад, вполне полезная штука.

Цитата Сообщение от Power_Basic Посмотреть сообщение
а тебя от него уже с самого порога отпугивают, дескать, приготовься, будет больно
Дядька ни разу не отпугиваю. Я хочу чтобы ты сделал осознанный выбор.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
17.03.2020, 15:53
Можно и без всяких DispHelper'ов руками создать IDispatch и вызывать его функции. Тогда не будет зависимости от DispHelper и екзешник будет маленького размера.
Код для FreeBASIC, сохранять в кодировке UTF-8 BOM или UTF-16 (BOM):

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#ifndef unicode
#define unicode
#endif
 
#include "windows.bi"
#include "win\ole2.bi"
 
Const ProgId_SapiSpVoice = "SAPI.SpVoice"
 
If CoInitialize(0) <> S_OK Then
    Print "Не могу инициализировать COM."
    End(1)
End If
 
Dim CLSID_SapiSpVoice As CLSID = Any
Dim hr As HRESULT = CLSIDFromProgID(@ProgId_SapiSpVoice, @CLSID_SapiSpVoice)
 
If FAILED(hr) Then
    Print "Не могу разрешить CLSID_SapiSpVoice по ProgId_SapiSpVoice", Hex(hr)
    End(2)
End If
 
Dim pClassFactory As IClassFactory Ptr = NULL
hr = CoGetClassObject(@CLSID_SapiSpVoice, CLSCTX_INPROC, NULL, @IID_IClassFactory, @pClassFactory)
 
If FAILED(hr) Then
    Print "Ошибка в CoGetClassObject", Hex(hr)
    End(3)
End If
 
Dim pVoice As IDispatch Ptr = NULL
hr = pClassFactory->lpVtbl->CreateInstance(pClassFactory, NULL, @IID_IDispatch, @pVoice)
If FAILED(hr) Then
    Print "Не могу создать IDispatch", Hex(hr)
    End(4)
End If
 
' Получаем DISPID для вызываемой функции Speak
Const cNames As UINT = 1
' Массив с именами функций
Dim rgszNames(cNames - 1) As WString Ptr = {@"Speak"}
' Массив с DISPID
Dim rgDispId(cNames - 1) As DISPID = Any
 
hr = IDispatch_GetIDsOfNames( _
    pVoice, _
    @IID_NULL, _
    @rgszNames(0), _
    cNames, _
    GetUserDefaultLCID(), _
    @rgDispId(0) _
)
If FAILED(hr) Then
    Print "Не получил DISPID", Hex(hr)
    End(5)
End If
 
' Текст для чтения
Dim TextToSpeach As BSTR = SysAllocString("Добрый день! Как ваши дела?")
If TextToSpeach = NULL Then
    Print "Не могу выделить память для строки текста для чтения"
    End(6)
End If
 
Const ParamsCount As Integer = 1
 
' Инициализация массива параметров
Dim varParam(ParamsCount - 1) As VARIANT = Any
For i As Integer = 0 To ParamsCount - 1
    VariantInit(@varParam(i))
Next
 
' Тип параметра — строка
varParam(0).vt = VT_BSTR
varParam(0).bstrVal = TextToSpeach
 
Dim Params(0) As DISPPARAMS = Any
Params(0).rgvarg = @varParam(0)
Params(0).cArgs = ParamsCount
Params(0).rgdispidNamedArgs = NULL
Params(0).cNamedArgs = 0
 
' Результат вызова функции
Dim VarResult As VARIANT = Any
 
' Вызываем функцию
hr = IDispatch_Invoke( _
    pVoice, _
    rgDispId(0), _
    @IID_NULL, _
    GetUserDefaultLCID(), _
    DISPATCH_METHOD, _
    @Params(0), _
    @VarResult, _
    NULL, _
    NULL _
)
 
' Очистка
For i As Integer = 0 To ParamsCount - 1
    VariantClear(@varParam(i))
Next
IDispatch_Release(pVoice)
IClassFactory_Release(pClassFactory)
Но это не самый эффективный путь, лучше конечно получить интерфейс ISapiVoice и дёргать его функции напрямую, а не через IDispatch.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
17.03.2020, 16:03  [ТС]
Замабувараев, круто дядь. У меня правда на 0.90.0 не собирается. Не обновляю,
потому что отваливаются старые исходники.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
17.03.2020, 16:06
В своё время по интернету бродила такая байка.

Как узнать: ваш компьютер девочка или мальчик?

Мой компьютер — девочка.

Создайте файл Voice.vbs и запишите туда строку:
Visual Basic
1
CreateObject("sapi.spvoice").Speak "Greetings my friend I your computer Listen to my voice and you learn the man I or the woman and i love you."
Запустите.
Если голос женский, то ваш компьютер — девочка, если мужской — ваш компьютер мальчик.

Добавлено через 1 минуту
Цитата Сообщение от Quiet Snow Посмотреть сообщение
У меня правда на 0.90.0 не собирается. Не обновляю,
1. Какую ошибку выдаёт?
2. Поставьте в параллельной папке свежую версию компилятора.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
17.03.2020, 16:09  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Как узнать: ваш компьютер девочка или мальчик?
Мой компьютер — девочка.
Так а другого и нет, помню на хрюне было два диктора эта анна и мужик ещё какой-то,
тут выпилили походу мужика.

0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
17.03.2020, 17:05  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
1. Какую ошибку выдаёт?
C:\FreeBasic\Compilier\fbc -s console "sp.bas"
sp.bas(16) warning 3(1): Passing different pointer types, at parameter 1 of CLSIDFROMPROGID()
sp.bas(19) error 90: Ambiguous call to overloaded function, HEX() in 'Print "Не могу разрешить CLSID_SapiSpVoice по ProgId_SapiSpVoice", Hex(hr)'
sp.bas(27) error 90: Ambiguous call to overloaded function, HEX() in 'Print "Ошибка в CoGetClassObject", Hex(hr)'
sp.bas(34) error 90: Ambiguous call to overloaded function, HEX() in 'Print "Не могу создать IDispatch", Hex(hr)'
sp.bas(41) warning 4(1): Suspicious pointer assignment
sp.bas(45) error 41: Variable not declared, IDispatch_GetIDsOfNames in 'hr = IDispatch_GetIDsOfNames( _'
sp.bas(54) error 90: Ambiguous call to overloaded function, HEX() in 'Print "Не получил DISPID", Hex(hr)'
sp.bas(59) error 57: Type mismatch, at parameter 1 of SYSALLOCSTRING() in 'Dim TextToSpeach As BSTR = SysAllocString("Добрый день! Как ваши дела?")'
sp.bas(87) error 41: Variable not declared, IDispatch_Invoke in 'hr = IDispatch_Invoke( _'
sp.bas(103) error 41: Variable not declared, IDispatch_Release in 'IDispatch_Release(pVoice)'
Цитата Сообщение от Замабувараев Посмотреть сообщение
2. Поставьте в параллельной папке свежую версию компилятора.
На самой последней 1.07.1, компилируется с варнингами, но при запуске никакого голоса нет.

sp.bas(16) warning 3(1): Passing different pointer types, at parameter 1 of CLSIDFROMPROGID()
sp.bas(41) warning 4(1): Suspicious pointer assignment
Скрипт vbs говорит нормально.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
17.03.2020, 17:39
Цитата Сообщение от Quiet Snow Посмотреть сообщение
компилируется с варнингами, но при запуске никакого голоса нет.
Подтверждаю. И на 1.05 тоже пробовал, те же варнинги.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Замабувараев, круто дядь.
Значит не круто...
Круто когда как на VBS, у всех работает одна строчка кода!
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
17.03.2020, 17:47  [ТС]
Отображение текста "крякозяброй". Поставил ! перед строкой и "\u" в конце как Стас говорил.
Пишет:
Не могу разрешить CLSID_SapiSpVoice по ProgId_SapiSpVoice
800401F3
Если это даст какую-нибудь информацию.

Добавлено через 7 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Значит не круто...
Да адаптирует, у него же работает, посмотрит что на всех системах даёт и адаптирует.
А с этими объектными штуками почти всегда такая возьня на FB, почему собственно про
это написал. И сам если обновлю сейчас компилятор, у меня половина своих исходников
тупо отвалится, тех которые завязаны на обновлённых хедерах.

Это дело тестов. Я один раз ваще такую дичь видел, в хедере было перепутано 2 параметра
местами в функции копирования памяти. Помню ваще опупел от такого, Стасу сказал,
он не поверил, причём реально не поверил. Смех смехом но так и было. Тут поседеешь
в эти хедеры лазить править.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
17.03.2020, 19:12
Ну вот, а я ещё собрался к вам переходить
Теперь буду репу чесать крепче прежнего
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
17.03.2020, 19:44
Цитата Сообщение от Quiet Snow Посмотреть сообщение
sp.bas(16) warning 3(1): Passing different pointer types, at parameter 1 of CLSIDFROMPROGID()
Я же говорил, что надо сохранять код в UTF-8 BOM или UTF-16 (BOM).
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
18.03.2020, 00:27
Замабувараев , кстати, синтаксис очень сильно смахивает на мой родной PowerBasic.
А то что не заставляют любой код "втискивать" в процедуры, это даже лучше. Так было в Спектрум-бейсике, с которого я когда-то начинал, да и в MS-DOS PowerBasic'е тоже так было. Смутно припоминаю, что первое время на Визуальном мне было из-за этого очень непривычно. Ну а потом, когда на PowerBasic (под винду) переходил, к тому времени уже к "порядку" успели приучить
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
18.03.2020, 04:11  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Я же говорил, что надо сохранять код в UTF-8 BOM или UTF-16 (BOM).
Я пользуюсь FBEdit-ом. Ничё не знаю про BOM не BOM. Пробовал блокнотом сохранять, пробовал Bred-ом 2-м
сохранять - один фиг. Чё это за прога такая для которой нужен особенный текстовый редактор?
Приложи свой текстовый файл, хоть посмотреть на него.

Добавлено через 46 минут
Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну вот, а я ещё собрался к вам переходить
Теперь буду репу чесать крепче прежнего
Не надо чесать репу, сомнение - враг программиста, хлоднокровно всё делается. Посмотри каждый
из перечисленных вариантов(везде есть пачки примеров) и вспомни мои слова про FB (хедеры, кодировки,
если было сказано, что проблемы будут - значит они будут, это не главное любые проблемы решаемы,
это всё изучается, если ты готов так ставить приоритеты). А так, к чему душа лежит больше - то и выбираешь.
Полная миграция это не быстро, год-полтора будешь возиться с мелочами и привыкать к синтаксису.

Сам косяки с кодировками частично решил зашиванием своего ASCII чарсета, на узкоглазых не работаю,
а локализацию своего софта чужим людям не доверю 100%, лучше сам пойду штудировать немецкий,
итальянский, французский и т.п., меняя UI в стороннем софте, смотря что и как там переведено, чем
какой-то лысый чёрт в какой-нибудь подпольной коморке будет "патчить" мой код. Если появится
потребность у людей - сами свяжутся, не появится - значит всё правильно сделал(надёжно и под себя).
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
18.03.2020, 07:01
Цитата Сообщение от Power_Basic Посмотреть сообщение
первое время на Визуальном мне было из-за этого очень непривычно
Power_Basic, я вот не пойму. Если нужна конкретная программа для перевода текстовых книг в звуковые, то какой смысл для этого изучать новый ЯП, да ещё такой, который для этого подходит с большими танцами с бубном. Знаете VB, он прекрасно и главное непринужденно работает с этими голосовыми движками при любых раскладах, так почему бы не написать эту прогу именно на нём? Тем более, что прога, как опять я же понял, чисто для себя, не коммерческая. Уметь правильно применить нужный инструмент в нужном месте дорогого стоит. Можно завернуть винт под крестовую отвёртку плоской отверткой. Но проще всё же крестовой

P.S.
Сейчас тенденция, все учат Питон. И пихают его везде, в игры, десктопные приложения. Ни кого особо не заботит, что exe-шник с "Привет, мир!" весит 7 мегабайт и выдает кучу ошибок при запуске в виде отсутствия десятка библиотек
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
18.03.2020, 09:47  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Сейчас тенденция, все учат Питон. И пихают его везде, в игры, десктопные приложения. Ни кого особо не заботит, что exe-шник с "Привет, мир!" весит 7 мегабайт и выдает кучу ошибок при запуске в виде отсутствия десятка библиотек
Это проблема глобализации. Когда несущественные процессы приобретают больший смысл,
нежели тот, что в них вложен. Эти "битвы за рынок" были и раньше, решают не люди, а
финансовые воротилы и статусные упыри. Проблема не в наличии тенденций, а в том, что
их стало слишком много, людям сложнее сориентироваться. Людей то хватает в этих всех
вещах, они просто приобретают меньший смысл, т.к. он закладывается искусственно,
чтобы протолкнуть на рынок то или иное решение, это уже не естественный отбор, а мыльный
пузырь, который рано или поздно лопается, как только появляется "нечто подобное", более
модерновое с равноценным смыслом, но т.к. тенденция уже есть - в дело вступает стадный
инстинкт и кони топчут всё направо и налево. Достаточно любого инфоповода.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,024
Записей в блоге: 7
18.03.2020, 13:20
Цитата Сообщение от Power_Basic Посмотреть сообщение
А то что не заставляют любой код "втискивать" в процедуры, это даже лучше.
Не стоит этим увлекаться, т. к. каким образом большую программу не напишешь, а если напишешь, она будет не читаемой. Я выкладывал на форум два кода, один с процедурой, а другой с подпрограммой. Книжная палеонтология
Первый на мой взгляд намного понятней и используемые переменные локальны, в отличие от глобальных во втором коде.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
18.03.2020, 16:35
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Что по FB ... Сразу скажу проблемы с кодировками - есть, тут надо всё очень хорошо понимать и ориентироваться в WinAPI(хороший стимул его освоить в той или иной степени).
Ну в принципе, да, без WinAPI в нашем деле никуда
Даже, казалось бы, простой таймер на VBA или на PowerBasic'е без WinAPI не сделать. А если потребуется не привязанный к форме, тогда и на Визуальном не получится, как недавно выяснилось.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
забугорное - там тоже приличное, но туда не хожу.
Ну нет, это неправильно, зарубежный опыт тоже надо использовать

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Кроссплатформы всего две: Linux, Windows.
На самом деле, мне нужно сейчас только под винду, но и возможность кодить под Linux звучит многообещающе. Эдак ведь можно будет и для андроидного планшета что-нибудь написать, или нет?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Про VB тебе расскажет Анатолий(The trick). Могу сказать только, что компилятор рвёт и PB и FB. За счёт того, что написан супер спецами, грамотно спаривает инструкции и минимизирует объём кода.
Он слегка устарел и работает лишь в 32 разрядной среде. Всё доработки компилятора и среды там самопальные, вроде ребята много чего там сделали и расширили.
Да там в блоге The trick'а вообще чудеса какие-то: инлайн ассемблер и многопоточность на Визуальном. Кстати, в своё время я перешёл с него на Power именно потому, что на PowerBasic'е можно очень-очень легко вставлять ассемблерные фрагменты прямо внутри бейсик-кода. Хотя, признаться, на практике мне это понадобилось всего пару раз, не больше.
Правильно я понял из твоих слов, что после всех доработок-расширений Визуальный Бейсик теперь даже превосходит (по скорости и по фичам) упомянутые диалекты?!

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ну и так по факту тут в VB разделе много народу, проще будет решить вопрос.
Да это я уже заметил
В "Звуке" вопрос задай, - в ответ только флуд или ни звука
Кстати, прикольный каламбурчик неожиданно сам собой получился

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Полная миграция это не быстро, год-полтора будешь возиться с мелочами и привыкать к синтаксису.
Да это понятно, мне и с Визуального на Power тоже когда-то непросто было переходить.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Power_Basic, я вот не пойму. Если нужна конкретная программа для перевода текстовых книг в звуковые, то какой смысл для этого изучать новый ЯП,
Да нет, ради создания какой-то одной программы я бы не брался изучать новый ЯП. Вот вы употребили метафору про отвёртки:

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Можно завернуть винт под крестовую отвёртку плоской отверткой. Но проще всё же крестовой
Ну это же как раз мой случай На данный момент в моём "наборе инструментов" имеется VB6 (полузабытый), VBA Excel (забытый очень сильно), ассемблер (забытый настолько, что впору снова начинать с рассылок Олега Калашникова ), ну и PowerBasic, который, как мне представляется, я освоил вполне сносно за последние приблизительно 5 (хотя и с большими перерывами) лет.

Как видите, все эти "отвёртки" имеют "плоский шлиц" - все они "заточены" под Win_32, а мне хотелось бы приобрести ещё и отвёрточку "под крестик", ну то есть под Win_64. Вот это и будет FreeBasic. Но и с PowerBasic'ом я навсегда распрощаться не хотел бы, он тоже будет ещё очень долго использоваться в моём "наборе инструментов".

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Тем более, что прога, как опять я же понял, чисто для себя, не коммерческая.
Ну разумеется, не коммерческая. Я кодирую исключительно для самого себя. Для меня это вроде творчества
Кто-то стихи пишет, кто-то марки собирает, а я программы пишу под настроение


Цитата Сообщение от Pro_grammer Посмотреть сообщение
Сейчас тенденция, все учат Питон. И пихают его везде, в игры, десктопные приложения. Ни кого особо не заботит, что exe-шник с "Привет, мир!" весит 7 мегабайт и выдает кучу ошибок при запуске в виде отсутствия десятка библиотек
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Эти "битвы за рынок"
Ну да, это производитеям железа выгоден раздутый софт, это они "музыку заказывают". Конечный пользователь в код заглянуть не может. "Чем больше программный дистрибутив, тем больше там заложено полезных возможностей", - так он рассуждает. Вот и тянется к "дутому" софту, ну а под него, соответственно, вынужден покупать более сильное, а значит и более дорогостоящее железо.

Цитата Сообщение от locm Посмотреть сообщение
Не стоит этим увлекаться, т. к. таким образом большую программу не напишешь, а если напишешь, она будет не читаемой. Я выкладывал на форум два кода, один с процедурой, а другой с подпрограммой.
Я посмотрел по ссылке. Ну в любом случае программа разбивается на процедуры (подпрограммы и функции), поэтому, я думаю, не особо критично, есть там функция Main или компиляция просто начинается с первой строчки.

Цитата Сообщение от locm Посмотреть сообщение
Первый на мой взгляд намного понятней и используемые переменные локальны, в отличие от глобальных во втором коде.
Так я до сих пор и не приучился к локальным переменным И даже хотя исправно их объявляю, всё равно "берегу" все переменные так, как-будто они все глобальные. Ну то есть всегда очень строго отслеживаю такие места в коде, где значение переменной может быть непреднамеренно искажено. Эта привычка (ну или навык) ещё со Спектрум'овских времён осталась.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,024
Записей в блоге: 7
18.03.2020, 17:18
Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну в принципе, да, без WinAPI в нашем деле никуда
Ну почему же, можно писать программы практически не используя WinAPI. Все зависит от библиотеки функций языка и решаемой задачи.

Цитата Сообщение от Power_Basic Посмотреть сообщение
На самом деле, мне нужно сейчас только под винду, но и возможность кодить под Linux звучит многообещающе.
Для кроссплатформенности важно не только наличие компиляторов под несколько платформ, но и библиотека функций под них, иначе будет слишком много отличий в коде. В Linux, MacOS и других системах нет WinAPI (эти функции только в винде). И если в коде есть вызовы WinAPI, на других платформах программа работать не будет.

Цитата Сообщение от Power_Basic Посмотреть сообщение
вообще чудеса какие-то: инлайн ассемблер и многопоточность на Визуальном.
То и другое реализовано не самым простым методом. Прочитайте сколько всего нужно для добавления асм-кода в VB. https://www.cyberforum.ru/blog... g4075.html
И это вместо того чтобы просто написать код (FASM-код в бейсик-коде).
PureBasic
1
2
3
4
5
6
7
8
9
10
Procedure Test(*Pointer, Variable)
  
  ! MOV dword [p.p_Pointer], 20
  ! MOV dword [p.v_Variable], 30
  
  Debug *Pointer
  Debug Variable
EndProcedure
 
Test(0, 0)
Или так.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
EnableASM
 
Procedure TestProc(*Pointer, Variable)
   
  MOV *Pointer, 20
  MOV Variable, 30
  
  Debug *Pointer
  Debug Variable
EndProcedure
 
TestProc(0, 0)
С многопоточностью ситуация не лучше. Нужно искать обходные пути чтобы многопоточность работала на VB. https://www.cyberforum.ru/blog... g5296.html
Вместо того чтобы просто написать многопоточную прогу.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
CompilerIf #PB_Compiler_Thread = 0
  CompilerError "Включите поддержку многопоточности в настроках компилятора"
CompilerEndIf
 
Global Semaphore = CreateSemaphore()
Global Mutex     = CreateMutex()
Global NewList Queue()
 
Procedure Producer(Total)
 
  For i = 1 To Total
    Delay(Random(750) + 250)
    
    ; Работа с очередью всё же требует нормальной блокировки через Мьютекс для потокобезопасности
    LockMutex(Mutex)
      LastElement(Queue())
      AddElement(Queue())
      Queue() = i
    UnlockMutex(Mutex)    
 
    ; Сигнализируем, что в очереди новый элемент
    SignalSemaphore(Semaphore)
  Next i
    
EndProcedure
 
If CreateThread(@Producer(), 30)
 
  For i = 1 To 30  
    ; ожидаем наличия одного элемента
    WaitSemaphore(Semaphore)
    
    ; отображаем состояние очереди
    LockMutex(Mutex)
      Queue$ = "Queue:"
      ForEach Queue()
        Queue$ + " " + Str(Queue())
      Next Queue()
      Debug Queue$
    
      ; удаляем головной элемент из очереди
      FirstElement(Queue())
      DeleteElement(Queue())
    UnlockMutex(Mutex)
    
  Next i
 
EndIf
Так что все познается в сравнении. У каждого языка свои достоинства и недостатки. Например VB хорошо подходит для работы с COM, но асм или многопоточность в нем реализуются не самыми простыми методами.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
18.03.2020, 17:32  [ТС]
Цитата Сообщение от Power_Basic Посмотреть сообщение
Эдак ведь можно будет и для андроидного планшета что-нибудь написать, или нет?
Андроид - это вроде совсем другая песня, хоть и построен на линуксе.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Визуальный Бейсик теперь даже превосходит (по скорости и по фичам) упомянутые диалекты?!
Фичи надо будет найти и освоить. Чудеса творит Анатолий, надо разницу понимать между ним
и обычным смертным, т.е. захочешь ли ты расковыривать до атомов VB в отладчике и читать про
самые нутра винды, чтобы как-то всё это понимать, что там было сделано и как оно в точности работает.
Если да - то ну ok.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Так я до сих пор и не приучился к локальным переменным И даже хотя исправно их объявляю, всё равно "берегу" все переменные так, как-будто они все глобальные. Ну то есть всегда очень строго отслеживаю такие места в коде, где значение переменной может быть непреднамеренно искажено. Эта привычка (ну или навык) ещё со Спектрум'овских времён осталась.
locm на этом просто собаку съел. К слову его критику про объявление переменных учёл.
Думаю и тут он не ошибается. Я сейчас глобалки объявляю рядышком с необх. процедурами(чтобы не приходилось
инициализировать их лишний раз внутри) и редко их использую где-то ещё, а когда работу с кодом завершаю
просто консолидирую всё по принципу QB, константы, типы, прототипы, массивы, код, процедуры\функции.
Указатели и динамическое выделение памяти - конечно корректнее(система хендлов), классика просто
универсальнее, её проще в разы портировать куда угодно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.03.2020, 17:32

Создание раздела
Доброго времени суток народ! Нужно в Битриксе создать раздел с несколькими подкатегориями. В сети пишут что это можно сделать в разделе...

Создание нового раздела
Поменял диск 500г на 1тб. Клонировал систему. 500гб на диске не размечено. С помощью GParted создал раздел ext4. Захожу на него, но...

Создание отдельного раздела
Здраствуйте, подскажите пожалуйсто, можноли создать в linux ubuntu отдельный раздел харда? и возможноли это сделать уже с установленной...

Создание раздела fedora 16
доброй ночи юзеры! прошу вашей помощи. есть ноут, на нем установлена федора 16. хард = 650гб (использую максимум 40-50гб) захотел...

VBulletin Создание родительского раздела
Здравствуйте! Пытаюсь создать родительский раздел (как на первом фото) и вот что получается, на втором фото как должно быть. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru