Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/78: Рейтинг темы: голосов - 78, средняя оценка - 4.86
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443

Изучение основ FreeBasic в сравнении с PowerBasic

10.10.2022, 22:17. Показов 22079. Ответов 218

Студворк — интернет-сервис помощи студентам
Всем добра и мира!

К сожалению, PowerBasic прекратил своё развитие вследствие смерти его создателя и главного (а скорее всего, единственного) разработчика Роберта Зейла в 2012-ом году. К настоящему времени последние надежды на его развитие окончательно угасли. В связи с этим я решил приступить к изучению основ FreeBasic'а.

В этой ветке форума буду задавать вопросы, возникающие у меня в процессе ознакомления с этим ЯП.

Как говорится, всё познаётся в сравнении. Ну вот и буду изучать FreeBasic, опираясь на определённый опыт ЛЮБИТЕЛЬСКОГО программирования на PowerBasic'е.

Буду очень благодарен за любую помощь.

Итак, первый возникший у меня вопрос.

Каким образом в структурах FreeBasic'а появилась возможность использовать динамические строки?
В PowerBasic'е это строго запрещено. Можно использовать только строки фиксированной длины.

Вот 2 работающих (с одним и тем же результатом на консоли) кода для сравнения:

FreeBasic
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TYPE Persons
    Name AS STRING
    Surname AS STRING
    Age AS BYTE = 35
END TYPE
 
DIM Vpersons AS Persons
 
Vpersons.Name="Richard"
Vpersons.Surname="Black"
 
? Vpersons.Name
? Vpersons.Surname
? Vpersons.Age
Sleep
PowerBasic
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#COMPILE EXE
#DIM ALL
 
TYPE Persons
  Name AS STRING*10       'если здесь написать "Name AS STRING", компилятор бастует
  Surname AS STRING*10   'если здесь написать "Surname AS STRING", компилятор бастует
  Age AS BYTE           'значение по умолчанию здесь присвоить не получится
END TYPE
 
FUNCTION PBMAIN () AS LONG
DIM Vpersons AS Persons
 
  Vpersons.Name="Richard"
  Vpersons.Surname="Black"
  Vpersons.Age = 35
 
  ? Vpersons.Name
  ? Vpersons.Surname
  ? Vpersons.Age
 
  SLEEP 5000    'если SLEEP без указания продолжительности, компилятор бастует
END FUNCTION
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2022, 22:17
Ответы с готовыми решениями:

Перегрузка методов (изучение основ)
Добрый день! Вот я добрался до перегрузки методов и быстренько накидал вот такой пример: using System; namespace...

Сколько в среднем часов уходит на изучение основ C++?
1) Если с нуля 2) Если после паскаля или чего то в этом духе

Групповое изучение программирование с основ без преподавателя
Суть: Студенты 3 курса Специальность: информационно вычислительная техника, после третьего курса "Аналитики" С с божьей...

218
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
18.12.2022, 15:24
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Power_Basic Посмотреть сообщение
Фрагмент, относящийся к рассматриваемому вопросу:
Во фрибесике так "win\winbase.bi" (входит в "windows.bi"):
PureBasic
1
declare function QueryPerformanceCounter(byval lpPerformanceCount as LARGE_INTEGER ptr) as WINBOOL
Оригинальные заголовочные файлы написаны на языке Си, и в этом языке нет ссылок. Там используют указатели.
Функции с передачей параметров по указателю пришли из Си во фрибесик. ByRef удобен тем, что не нужно собаку указывать. Так почему же нельзя было все указатели заменить на ByRef? Потому что через ByRef нельзя передать NUL.
Цитата Сообщение от Power_Basic Посмотреть сообщение
В нашем случае мы передаём и получаем обратно простое целое 64-битное число безо всяких структур.
Нет. LARGE_INTEGER — это вообще объединение, включающее в себя структуру ("win\winnt.bi"):
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type _LARGE_INTEGER_u
    LowPart as DWORD
    HighPart as LONG
end type
 
union _LARGE_INTEGER
    type
        LowPart as DWORD
        HighPart as LONG
    end type
 
    u as _LARGE_INTEGER_u
    QuadPart as LONGLONG
end union
 
type LARGE_INTEGER as _LARGE_INTEGER
LONGLONG — это винапишное переопределение для LongInt.
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
27.12.2022, 19:26  [ТС]
Правильно я понял, что в FreeBasic'е разница между числовыми типами данных касается только INTEGER и UINTEGER?
Вот специально для сравнения набросал две небольшие программки:

FreeBasic x32
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
#COMPILER FREEBASIC
'#COMPILE GUI EXE 32
#COMPILE CONSOLE EXE 32
'#include once "windows.bi"
'#include once "win\commctrl.bi"
'#include once "Afx\AfxStr.inc"                        'requires WINFBX to be installed
'#include once "fb_lib.inc"
'#include once "ustring.inc"                           'activate "USTRING" + assign "DSTR" and "ZSTR"
 
shell "chcp 1251"   'Для вывода русского текста в консоль в начале программы написать эту строчку:
                    'Shell "chcp 1251". В настройках консоли должен быть установлен шрифт Lucida Console
 
 
FUNCTION FB_MAIN () AS LONG
  dim A_BYTE as BYTE
  dim A_uBYTE as uBYTE
  dim A_SHORT as SHORT
  dim A_uSHORT as uSHORT
  dim A_INTEGER as INTEGER
  dim A_uINTEGER as uINTEGER
  dim A_LONG as LONG
  dim A_uLONG as uLONG
  dim A_LONGINT as LONGINT
  dim A_uLONGINT as uLONGINT
  dim A_SINGLE as SINGLE
  dim A_DOUBLE as DOUBLE
 
 
  ? "Результат:"
  ? "sizeof (A_BYTE)     = " & sizeof (A_BYTE)
  ? "sizeof (A_uBYTE)    = " & sizeof (A_uBYTE)
  ? "sizeof (A_SHORT)    = " & sizeof (A_SHORT)
  ? "sizeof (A_uSHORT)   = " & sizeof (A_uSHORT)
  ? "sizeof (A_INTEGER)  = " & sizeof (A_INTEGER)
  ? "sizeof (A_uINTEGER) = " & sizeof (A_uINTEGER)
  ? "sizeof (A_LONG)     = " & sizeof (A_LONG)
  ? "sizeof (A_uLONG)    = " & sizeof (A_uLONG)
  ? "sizeof (A_LONGINT)  = " & sizeof (A_LONGINT)
  ? "sizeof (A_uLONGINT) = " & sizeof (A_uLONGINT)
  ? "sizeof (A_SINGLE)   = " & sizeof (A_SINGLE)
  ? "sizeof (A_DOUBLE)   = " & sizeof (A_DOUBLE)
 
  'Результат:
  'sizeof (A_BYTE)     = 1
  'sizeof (A_uBYTE)    = 1
  'sizeof (A_SHORT)    = 2
  'sizeof (A_uSHORT)   = 2
  'sizeof (A_INTEGER)  = 4
  'sizeof (A_uINTEGER) = 4
  'sizeof (A_LONG)     = 4
  'sizeof (A_uLONG)    = 4
  'sizeof (A_LONGINT)  = 8
  'sizeof (A_uLONGINT) = 8
  'sizeof (A_SINGLE)   = 4
  'sizeof (A_DOUBLE)   = 8
 
  function = 1
  sleep
end function
 
 
END FB_MAIN
FreeBasic x64
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
#COMPILER FREEBASIC
'#COMPILE GUI EXE 32
#COMPILE CONSOLE EXE 64
'#include once "windows.bi"
'#include once "win\commctrl.bi"
'#include once "Afx\AfxStr.inc"                        'requires WINFBX to be installed
'#include once "fb_lib.inc"
'#include once "ustring.inc"                           'activate "USTRING" + assign "DSTR" and "ZSTR"
 
shell "chcp 1251"   'Для вывода русского текста в консоль в начале программы написать эту строчку:
                    'Shell "chcp 1251". В настройках консоли должен быть установлен шрифт Lucida Console
 
 
FUNCTION FB_MAIN () AS LONG
  dim A_BYTE as BYTE
  dim A_uBYTE as uBYTE
  dim A_SHORT as SHORT
  dim A_uSHORT as uSHORT
  dim A_INTEGER as INTEGER
  dim A_uINTEGER as uINTEGER
  dim A_LONG as LONG
  dim A_uLONG as uLONG
  dim A_LONGINT as LONGINT
  dim A_uLONGINT as uLONGINT
  dim A_SINGLE as SINGLE
  dim A_DOUBLE as DOUBLE
 
 
  ? "Результат:"
  ? "sizeof (A_BYTE)     = " & sizeof (A_BYTE)
  ? "sizeof (A_uBYTE)    = " & sizeof (A_uBYTE)
  ? "sizeof (A_SHORT)    = " & sizeof (A_SHORT)
  ? "sizeof (A_uSHORT)   = " & sizeof (A_uSHORT)
  ? "sizeof (A_INTEGER)  = " & sizeof (A_INTEGER)
  ? "sizeof (A_uINTEGER) = " & sizeof (A_uINTEGER)
  ? "sizeof (A_LONG)     = " & sizeof (A_LONG)
  ? "sizeof (A_uLONG)    = " & sizeof (A_uLONG)
  ? "sizeof (A_LONGINT)  = " & sizeof (A_LONGINT)
  ? "sizeof (A_uLONGINT) = " & sizeof (A_uLONGINT)
  ? "sizeof (A_SINGLE)   = " & sizeof (A_SINGLE)
  ? "sizeof (A_DOUBLE)   = " & sizeof (A_DOUBLE)
 
  'Результат:
  'sizeof (A_BYTE)     = 1
  'sizeof (A_uBYTE)    = 1
  'sizeof (A_SHORT)    = 2
  'sizeof (A_uSHORT)   = 2
  'sizeof (A_INTEGER)  = 8
  'sizeof (A_uINTEGER) = 8
  'sizeof (A_LONG)     = 4
  'sizeof (A_uLONG)    = 4
  'sizeof (A_LONGINT)  = 8
  'sizeof (A_uLONGINT) = 8
  'sizeof (A_SINGLE)   = 4
  'sizeof (A_DOUBLE)   = 8
 
  function = 1
  sleep
end function
 
END FB_MAIN
Но тогда мне не понятна фраза из учебника Станислава:
Long и Ulong типы данных меняются в зависимости от платформы. В настоящее время, они - псевдонимы, также как Integer или LongInt и их версии без знака, соответственно.
Миниатюры
Изучение основ FreeBasic в сравнении с PowerBasic   Изучение основ FreeBasic в сравнении с PowerBasic  
Вложения
Тип файла: zip Variables_32.zip (149.4 Кб, 0 просмотров)
Тип файла: zip Variables_64.zip (150.9 Кб, 3 просмотров)
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
27.12.2022, 22:01
На сколько я понял в 32х разрядном компиляторе Long = Integer (4х байтовое целое число), в 64х разрядном Long = LongInt (8ми байтовое целое число), аналогично для беззнаковых вариантах типов
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
27.12.2022, 22:33
Цитата Сообщение от Power_Basic Посмотреть сообщение
Long и Ulong типы данных меняются в зависимости от платформы. В настоящее время, они - псевдонимы, также как Integer или LongInt и их версии без знака, соответственно.
Это ошибка в учебнике.

От битности компилятора, которым вы компилировали программу, зависит только Integer (и UInteger).
Byte, Short, Long и LongInt имеют фиксированную битность (и их беззнаковые братья).
2
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
28.12.2022, 22:24
Цитата Сообщение от Замабувараев Посмотреть сообщение
Это ошибка в учебнике.
Очень интересно, читая учебник, думал что именно Long меняет разрядность, оказывается это Integer по разному себя ведет.
Спасибо
0
126 / 53 / 1
Регистрация: 26.10.2012
Сообщений: 89
29.12.2022, 11:29
Я прошу прощения за неточность в учебнике. Где-то 10 лет назад , в справке как раз было именно так и указано. Тогда планировалось , что именно LONG станет вариативным , но потом разработчики переиграли и сделали вариативным INTEGER. Я исправил страницу , где была ошибка. Спасибо за то , что упомянули об этом. Если где-то еще будут ошибки , не стесняйтесь указывать на это.
2
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
29.12.2022, 18:24  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
Очень интересно, читая учебник, думал что именно Long меняет разрядность, оказывается это Integer по разному себя ведет.
Спасибо
Ну да, мне даже пришлось целое исследование на сей счёт произвести, аж целых две полноценные программы написать специально ради выяснения этого факта
И в результате этого "исследования" выяснилось, что "хамелеон" у нас действительно только один. А именно Integer. Ну со своей беззнаковой подружкой, разумеется

Цитата Сообщение от stabud Посмотреть сообщение
Я прошу прощения за неточность в учебнике. Где-то 10 лет назад , в справке как раз было именно так и указано. Тогда планировалось , что именно LONG станет вариативным , но потом разработчики переиграли и сделали вариативным INTEGER. Я исправил страницу , где была ошибка. Спасибо за то , что упомянули об этом.
Фигасе! Ну и форум! Я и представить себе не мог, что так вот запросто можно пообщаться с автором такого замечательного учебника, да и вообще с общепризнанным авторитетом в русскоязычном FreeBasic-сообществе. И я даже не побоюсь этого слова, в известной степени, первопроходцем, которому этот диалект обязан своей популярностью особенно в нашей русскоязычной среде.

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


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

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

И это ведь ещё надо учитывать, что программисты такого высокого уровня, насколько я успел заметить, не любят отвлекаться на написание учебных материалов. Да оно и понятно. У всех какие-то планы, какие-то неотложные разработки.
Иные даже к собственным программам не удосуживаются написать хоть небольшую справочную систему.

Цитата Сообщение от stabud Посмотреть сообщение
Если где-то еще будут ошибки , не стесняйтесь указывать на это.
Не сомневайтесь, не постесняемся, укажем

Добавлено через 3 часа 14 минут
А кроме того, мне ещё понравилось, что там в учебнике все примеры очень простые и иллюстративные, без лишних наворотов, за которыми легко может затеряться сама суть рассматриваемого вопроса.
3
 Аватар для yevrowl
306 / 77 / 6
Регистрация: 27.04.2022
Сообщений: 243
30.12.2022, 00:38

Не по теме:

Если брать PC-совместимые ПК, то начинал на GW-Basic, потом перешёл на Turbo Basic, и лишь за тем на Q(uick) Basic, на котором пока остановился. На мой, дилетантский, взгляд — синтаксис Power Basic того же автора ушёл гораздо дальше от TB, чем Free Basic.



P. S. Кто-нибудь занимается написанием ПО для FreeBSD на FreeBasic? Expected identifier в FreeBasic
0
126 / 53 / 1
Регистрация: 26.10.2012
Сообщений: 89
30.12.2022, 13:14
@Power_Basic

Спасибо за отзыв!

Когда я писал учебник , ни о каком 64-bit компиляторе и речи не было. Все было написано опираясь на 32-bit платформу. По хорошему конечно надо обновить учебник. А именно, в описании примеров или рассуждений четко дать понять , что INTEGER не всегда 4 байта и что платформа может быть не только 32-битной.

Добавлено через 1 час 28 минут
@yevrowl

Программа не будет компилироваться в системе freebsd , потому что для этой системы внутренне не реализованы функции работы с портами. Уберите функцию OUT (строчка OUT 984 , 46) и программа скомпилируется. Не знаю , зачем в программе используется работы с портами , тем более с TCP , да и не особо хочу знать. Вы можете закомментировать эту строчку , либо реализовать ее вручную , например с помощью ассемблерных вставок, например так (это при компиляции с #lang "QB" на 64-bit freebsd . Если компиляция на 32-bit системе , то rdx меняем на edx , а rax меняем на eax):

' OUT 984 , 46
Assembler
1
2
3
4
5
6
7
8
9
__Asm
push rdx
push rax
mov edx , 984
mov eax , 46
out dx ,al
pop rax
pop rdx
end __ASM
Не могу точно сказать , корректно ли это на 100% , тут лучше обратиться к ассемблерщикам.

Добавлено через 5 часов 25 минут
Блин , какое нафиг TCP , 984 - это десятичное , а в hex будет 3D8 . Это какой-то порт , который использовали еще во времена доса только не знаю зачем он нужен. Но раз стоит сразу за функцией screen , наверное что-то связанное с экраном. Просто вырезать это не жалеючи.
2
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,024
Записей в блоге: 7
30.12.2022, 14:02
Цитата Сообщение от stabud Посмотреть сообщение
строчка OUT 984 , 46
Современные многозачные ОС не должны позволять приложениям доступ напрямую к железу, иначе это может привести к различным сбоям.
В винде с этим четко сделано - инструкции In и Out заблокированы для юзермода и при их использовании приложение вылетает.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
30.12.2022, 17:08  [ТС]
Цитата Сообщение от stabud Посмотреть сообщение
Когда я писал учебник , ни о каком 64-bit компиляторе и речи не было. Все было написано опираясь на 32-bit платформу. По хорошему конечно надо обновить учебник. А именно, в описании примеров или рассуждений четко дать понять , что INTEGER не всегда 4 байта и что платформа может быть не только 32-битной.
Ну это было бы совершенно идеально!
Сам-то я теперь в процессе предстоящего более глубокого изучения всего учебника, разумеется, постоянно буду держать в уме возможность возникновения некоторых противоречий и возможную причину их появления с учётом полученной здесь информации. Но вот для неподготовленных в этом отношении читателей могут возникать определённые трудности в понимании отдельных фрагментов изучаемого материала.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Это ошибка в учебнике.
Я снимаю перед вами шляпу. Поставленный вами диагноз в конечном итоге оказался совершенно точным
Следует признать, что это было довольно рискованное утверждение, чреватое серьёзными репутационными рисками, ведь это не просто учебник, а популярнейший учебник, на котором, я уверен, учились если не миллионы, то тысячи-то уж точно. Не удивлюсь, если выяснится, что и вы сами когда-то делали свои первые шаги в изучении FreeBasic'а, опираясь именно на этот источник.
1
 Аватар для yevrowl
306 / 77 / 6
Регистрация: 27.04.2022
Сообщений: 243
30.12.2022, 23:34
Цитата Сообщение от stabud Посмотреть сообщение
Программа не будет компилироваться в системе freebsd , потому что для этой системы внутренне не реализованы функции работы с портами. Уберите функцию OUT (строчка OUT 984 , 46) и программа скомпилируется.
Спасибо за помощь, убрал и компилировалась!
Цитата Сообщение от stabud Посмотреть сообщение
Не знаю , зачем в программе используется работы с портами , тем более с TCP , да и не особо хочу знать.
Смена палитры CGA на 3-ю (так называемую недокументированную, при этом используемую во множестве игр, и на взгляд некоторых наиболее приличную).
Цитата Сообщение от stabud Посмотреть сообщение
Вы можете закомментировать эту строчку , либо реализовать ее вручную , например с помощью ассемблерных вставок, например так (это при компиляции с #lang "QB" на 64-bit freebsd . Если компиляция на 32-bit системе , то rdx меняем на edx , а rax меняем на eax):

' OUT 984 , 46
Assembler
1
2
3
4
5
6
7
8
9
__Asm
push rdx
push rax
mov edx , 984
mov eax , 46
out dx ,al
pop rax
pop rdx
end __ASM
Не могу точно сказать , корректно ли это на 100% , тут лучше обратиться к ассемблерщикам.
Не получилось, скриншот прилагается, полагаю что всё равно не получится без реального железа, на котором FreeBSD не запустится.

Цитата Сообщение от stabud Посмотреть сообщение
Блин , какое нафиг TCP , 984 - это десятичное , а в hex будет 3D8 . Это какой-то порт , который использовали еще во времена доса только не знаю зачем он нужен. Но раз стоит сразу за функцией screen , наверное что-то связанное с экраном. Просто вырезать это не жалеючи.
Согласен, ещё раз благодарю.
Миниатюры
Изучение основ FreeBasic в сравнении с PowerBasic  
0
30.12.2022, 23:41

Не по теме:

Вообще с CGA разные фокусы делали — https://www.mobygames.com/attr... ibuteId,5/ — и ещё композитный вариант был.

0
126 / 53 / 1
Регистрация: 26.10.2012
Сообщений: 89
31.12.2022, 07:10
Цитата Сообщение от yevrowl Посмотреть сообщение
Не получилось, скриншот прилагается, полагаю что всё равно не получится без реального железа, на котором FreeBSD не запустится.
Надо было строчку OUT 984 , 46 закомментировать и вместо ее код ASM вставок. Судя по ошибкам в скриншоте , вы это не сделали или вы пробовали другой код , в котором еще где-то вызываются функции для работы с портами. Я же даже вверху кода ASM вставок это указал:

' OUT 984 , 46
__Asm
push rdx
push rax
mov edx , 984
mov eax , 46
out dx ,al
pop rax
pop rdx
end __ASM

Добавлено через 1 час 17 минут
Цитата Сообщение от locm Посмотреть сообщение
Современные многозачные ОС не должны позволять приложениям доступ напрямую к железу, иначе это может привести к различным сбоям.
В винде с этим четко сделано - инструкции In и Out заблокированы для юзермода и при их использовании приложение вылетает.
В линуксе тоже вылетает с правами юзера. Если запустить с правами рута , то не будет вылетать. Во FreeBSD та же ситуация.
0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65
02.05.2023, 01:51
Замабувараев
Добрый день.
Прошу консультацию, помощь в решении задачи.
Суть в следующем: во Free Basic математически определяю по нужному алгоритму число. Необходимо это число вывести на динамик компьютера как частоту звука в соответствии с этим числом. Знаю что многие функции ФБ решает с помощью функций операционной системы (видимо WinApi). Но с операционной системой взаимодействовать в рамках ФБ я не умею, овладел им по учебнику из интернет, где не увидел возможности это делать. Возможно где то эти сведения и прописаны.
Просто хочется ускорить решение задачи и потому обращаюсь за помощью. Хотелось бы получить фрагмент кода в готовом виде - где командами (либо операторами, либо функциями) ФБ получает возможность извлечь звук (заданной в программе частоты), желательно без выхода из программы или с возвратом в неё.
Заранее благодарю за внимание и возможную помощь.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.05.2023, 09:38
Цитата Сообщение от volchv Посмотреть сообщение
извлечь звук (заданной в программе частоты)
Если вы имели в виду воспроизвести звук, то используем функцию Beep:
PureBasic
1
2
3
#include once "windows.bi"
 
Beep_( 1750, 300 )
Первый параметр — частота в герцах, второй параметр — длительность в миллисекундах.
1
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65
05.05.2023, 21:12
stabud,
Добрые пожелания.
Случайно узнал здесь - что есть учебник (не справочный файл- хотя он для меня сейчаc вполне сходит за учебник Free Basica - именно из него беру недостающее поверх знаний QBasica). Как понимаю - вы участвуете в его создании?
Что нужно чтобы получить его в пользование. Полуслепым темпом изучаю, особенно сложности во взаимодействии FB с операционной системой. Трудно даются массивы. У меня в работе 3,4,5 мерные массивы. Но не их размерность сложна, а возможность разнообразных форм вывода и ввода. Т.е. хотелось бы это разнообразие видеть в примерах. Ну а в настоящее время бьюсь, и беспокою ребят с форума проблемой вывода в программе звука по заданному числу (частоте) в установленном порядке. При не слишком строгом способе установки мной компилятора - он слишком сопротивляется - не даёт работать беспроблеммно. Извинения за беспокойство. Еще раз добра и спасибо.
0
05.05.2023, 23:31

Не по теме:

Цитата Сообщение от volchv Посмотреть сообщение
У меня в работе 3,4,5 мерные массивы.
В большинстве случаев нет необходимости больше чем 2-ух двухмерных массивах. Иногда нужны 3-ех мерные.
Больше нецелесообразно т. к. обычно неэффективно расходуется память и код становится запутанным. Если нужно изменить размер какого-то из измерений или размерность, это может создать определенные сложности.

Вместо одного многомерного массива используйте массив структур, в которых могут быть в том числе массивы.

0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65
06.05.2023, 10:53
Да, это понимаю. Просто необходимо понимать, что происходит в процессе изменений по нескольким осям и в общем, в графике и в математике, при этом наблюдать, меняя позиции, параметры. спасибо за ответ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.05.2023, 10:53

Лабораторная работа на изучение основ работы с debug.exe
Ход работы 1. Запишите в отчет тему и цель. 2. В командной строке наберите debug. У вас должно появиться на экране окно отладчика с...

Лабораторная работа(Изучение основ.Одномерный и двумерный массивы.Процессы)
Ребята, помогите с задачами, дали написать задачи на VBA (ни разу с ним не имел дела), первые 3 задачи делал на python'e может быть Вы...

Проблема с Imagelist в PowerBasic 10
Я хочу в ресурс вставить одно растровое изображение. Затем с помощью графических команд вырезать кусочки в память и добавлять их в...

FreeBASIC
Заметил, что уже имеющиеся на форуме темы в разделах: - QBasic - Visual Basic - VBA - Pure Basic посещаются довольно часто –...

Уйти с freebasic
написал кое как программу с openCL на freebasic там моделируется взfвимодействие частиц через потенциал парного взаимодейстивия ...


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

Или воспользуйтесь поиском по форуму:
219
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
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 и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru