Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/70: Рейтинг темы: голосов - 70, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 62

Отладка кода (программы) во FreeBasic

21.02.2024, 01:11. Показов 13478. Ответов 224

Студворк — интернет-сервис помощи студентам
Уважаемые программисты. Подскажите - как производится наладка отладка (не редактирование) программы (кода) во FreeBasic.
В QB это делалось просто. В меню Debug командой toggle breakpoint метится строка до которой проверить.
После запуска идет проверка, отмечаются ошибки, проблемы.
У меня во FreeBasic этот метод не работает. Программа на метку не реагирует, действия не совершаются. Прошу помощи.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2024, 01:11
Ответы с готовыми решениями:

Компиляция программы Qbasic в Freebasic
По мере надобности компиляции одной из старых программ, написанных давным давно в Qbasic, установил Freebasic (OS Ubuntu). Пытаюсь...

Грамотная отладка программы, подмога в структуризации кода
Сразу прошу прощения, если ошибся разделом. Написал программу. Она простая. Она сжимает выбранную папку в zip и кладёт куда нужно. ...

Отладка программы в Delphi(нужно подредактировать текст чужой программы)
Взял у одногруппника похожую, на свою программу, нужно переделать под свое задание. А я сам чайник, и не могу понять, что там лишнее, а...

224
 Аватар для Mikle Quits
737 / 256 / 14
Регистрация: 21.01.2023
Сообщений: 355
07.03.2024, 15:11
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Стандартный виндовый интерфейс. Он же тоже GDI?
Да, но выглядит по-другому, другие эффекты. Это сравнение не одного и того же.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
COM - не люблю, мне тяжело всё это разгребать
на FB
Допускаю. На VB6 это просто не замечаешь.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
они возникают когда софт
требует то, чего у карты нет.
Речь о самых элементарных вещах, типа невозможности установить частоту кадров.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
в 7-ке надо поставить не Aero, а классический интерфейс.
Иначе это будет уже не GDI, а Direct3D трудиться
Так я изначально подразумевал Aero. Если в 7-ке ещё некоторые его выключали, то в 10-ке такого нет.
Без этого Direct3D интерфейса на мониторах больше FullHD обычный виндовый интерфейс уже ощутимо тормозит, на XP в том числе.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 15:12
Цитата Сообщение от The trick Посмотреть сообщение
AlphaBlend тоже аппаратно-ускорен в GDI.
Стоило бы задать вопрос разработчикам 7-й винды(классич режим), почему при перетаскивании окна
верха экрана, когда на весь экран рисуется прозрачный прямоугольник, испытывается сильное
замедление при дальнейшем движении окна. На моём компе ещё не прям жопа, а вот на том же X5470
с карточкой послабее там уже всё печально.

К слову рисовка прозрачного прямоугольника статистики например в deathmatch в half-life 1 на карте 3dfx voodoo 2
на втором пентиуме, происходило визуально быстрее, чем моя семёрка это делает на рабочем столе на
9 райзене и на GTX980.

Но это вопросы к разработчикам винды. Я лишь констатировал факт что такое явление есть.
0
Эксперт по электронике
6207 / 2901 / 311
Регистрация: 28.10.2011
Сообщений: 11,218
Записей в блоге: 6
07.03.2024, 15:19
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Т.е. встроенный FBGfx. Т.к. он даже в худшем случае будет работать быстрее GDI.
На чем базируется FBGfx?
Например в PB, в винде, библиотека 2D Drawing базируется на GDI, VectorDrawing на GDI+, Screen на DX9/DX11/OpenGL.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Не перевариваю вид Aero(эти толстые окаймления
каждого окна и прямоугольные кнопки управления окном).
Все настраивается. Толщина рамок окна может быть 1 пиксель.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Плюс мне не нужно сглаживание
текста, всегда выключаю, чтобы беречь зрение.
Вместо этого нужно запустить "Средство настройки текста ClearType" и выбрать оптимальное отображение текста. Результат обычно лучше чем при отключении сглаживания.
0
Модератор
10033 / 3880 / 882
Регистрация: 22.02.2013
Сообщений: 5,827
Записей в блоге: 78
07.03.2024, 15:24
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Стоило бы задать вопрос разработчикам 7-й винды(классич режим), почему при перетаскивании окна
верха экрана, когда на весь экран рисуется прозрачный прямоугольник
Ну тут вопрос чем и как рисуется этот прямоугольник. Я написал про конкретно AlphaBlend функцию из GDI если сравнивать е к примеру с TransparentBlt.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 15:38
Цитата Сообщение от Замабувараев Посмотреть сообщение
Не используйте однострочный IF. Условия вместе с телом на одной строке «If a > b Then c = 100» читаются намного хуже.
Визуально и интуитивно - разницы нет. Если параметров которые надо изменить несколько - полный IF,
иначе укороченный. Укороченный для единичных флагов уместно, особенно если там много
таких флагов, обособленных по смыслу, так визуально лучше выходит, меньше места жрёт,
если часто редактируется - выгоднее.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,253
Записей в блоге: 4
07.03.2024, 15:44
Цитата Сообщение от locm Посмотреть сообщение
На чем базируется FBGfx?
Сначала пытается инициализировать ОпенГёл, если не сработало, переходит на GDI+, если и это не сработало, то отказывает на GDI.
FBGfx примитивна и только и может, что выводить точки, линии, круглешки и прямоугольники. Даже GDI из Win95 умеет больше.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
а лучше
вообще не применять, что сделано, например, в прототипах в хедерах FB, вы же любите
приводить в пример FB. Упрекните авторов там. Мол чё за фигня.
Эти заголовочники никто вручную не пишет. Там есть утилита, которая си‐заголовочники переделывает в бесик‐заголовочники.
Разработчики решили взять заголовочники из проекта mingw, а не оригинальные от корпорации Микрософт. В mingw тоже все функции в одну строку объявлены.
В оригинальных же заголовочниках по WinAPI от корпорации Микрософт всё как надо: каждый параметр на отдельной строке, подробно прокомментирован, у каждой функции описание, у каждой константы назначение. Читается очень легко, как литературный роман, а не какой‐нибудь си‐код.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 15:47
Цитата Сообщение от The trick Посмотреть сообщение
Ну тут вопрос чем и как рисуется этот прямоугольник.
Скорее всего отрисовка идёт чисто процессором, как там участвует GDI мне не известно,
как и неизвестно почему, если там всё аппаратно, авторы это не использовали.
Если как коммерс ход "подтолкнуть к Aero", ну это как-то странно выглядит, т.к. после XP
кассич режим использовало много народу, висту же люди попросту пропустили.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,253
Записей в блоге: 4
07.03.2024, 15:47
Цитата Сообщение от Quiet Snow Посмотреть сообщение
иначе укороченный
Потому что несколько инструкций на одной строке. Одна строка = один оператор.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 15:48
Цитата Сообщение от Замабувараев Посмотреть сообщение
В оригинальных же заголовочниках по WinAPI от корпорации Микрософт всё как надо: каждый параметр на отдельной строке
В хедерах или в MSDN?
0
Модератор
10033 / 3880 / 882
Регистрация: 22.02.2013
Сообщений: 5,827
Записей в блоге: 78
07.03.2024, 15:50
Quiet Snow, запусти отрисовку в цикле через AlphaBlend и увидишь что там ничего не тормозит. В конкретно в твоем случае что там тормозило - я не знаю, это гадание.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 15:51
Цитата Сообщение от Замабувараев Посмотреть сообщение
Потому что несколько инструкций на одной строке. Одна строка = один оператор.
Это концепт максимальной читаемости кода.
Но как уже указывал могут быть некритичные отступления от этого концепта ради выгоды.
0
 Аватар для Mikle Quits
737 / 256 / 14
Регистрация: 21.01.2023
Сообщений: 355
07.03.2024, 16:00
Цитата Сообщение от Quiet Snow Посмотреть сообщение
могут быть некритичные отступления от этого концепта ради выгоды
Иногда даже ради читаемости. Сам не люблю городить несколько операторов в одной строке, но такие варианты допускаю:
Visual Basic
1
ix = Int(x): iy = Int(y): iz = Int(z)
1
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 16:07
Цитата Сообщение от The trick Посмотреть сообщение
В конкретно в твоем случае что там тормозило - я не знаю, это гадание.
Не помню, может использовал и AlphaBlend. Тот код будет трудно найти, но попробую.
Там была двоякая задача, обеспечивающая "сурфейс" от FBgfx разного размера, который блитится
на любой указанный размер экрана. Т.е. можно было завести 320x200 и оно растягивалось,
а можно было 4k разрешение, и оно ужималось в указанное окно(окно выводил без рамки).
Т.е. рендер шёл на DDraw(FBGfx через него работает), а потом этот буфер блитился уже через
GDI на экран. Подробностей не помню, помню только, что в сумме было медленно, дефолтный
обработчик FB работал ощутимо шустрее, чё туда напихали - не знаю. GDI сильно и не касался,
в том коде где-то напортачить было сложно, все флаги проверялись и тестировались.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,253
Записей в блоге: 4
07.03.2024, 16:11
Цитата Сообщение от Quiet Snow Посмотреть сообщение
В хедерах
Прямо там.
Открываем файл «C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\wine rror.h» и видим:


Или файл WinUser.h:

Некоторые описания имеются.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 16:20
The trick, нашёл код. Короче там вот чё:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FUNCTION on_paint(BYVAL hwnd AS HWND, BYVAL wparam AS WPARAM, BYVAL lparam AS LPARAM) AS INTEGER
 
    DIM rct AS RECT
    DIM pnt AS PAINTSTRUCT
    DIM hDC AS HDC
 
  'Рисуем gfx буфер на экран
  GetClientRect( hWnd, @rct )
  hDC = BeginPaint(hWnd, @pnt)
 
  SetStretchBltMode hDC, BLACKONWHITE
 
  StretchDIBits hDC, 0, 0, rct.Right - rct.left, rct.bottom - rct.top, 0, 0, ScrXRez, ScrYRez, ScreenPtr, CPtr(bitmapinfo PTR, @bmi), DIB_RGB_COLORS, SRCCOPY
 
  EndPaint hWnd, @pnt
  FlipOk = -1
END FUNCTION
Добавлено через 7 минут
Замабувараев,
Цитата Сообщение от Замабувараев Посмотреть сообщение
Прямо там.
Открываем файл «C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\wine rror.h» и видим:
Мы про параметры функций говорили. Про чёрточку, которая переносит параметры функций на следующую строку.

А то что ты озвучил - как-бы тут ничего такого нет, мол зачем нагромождать, это вроде очевидно, ну всё правильно сделано.
0
Модератор
10033 / 3880 / 882
Регистрация: 22.02.2013
Сообщений: 5,827
Записей в блоге: 78
07.03.2024, 16:28
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Нашёл код. Короче там вот чё:
И где-тут AlphaBlend?
Ну и BeginPaint возвращает прямоугольник который нужно обновить, а не все окно если важна производительность.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,253
Записей в блоге: 4
07.03.2024, 16:36
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Про чёрточку, которая переносит параметры функций на следующую строку.
Вот в Visual Basic.Net эту чёрточку в 2010 году наконец‐то сделали опциональной, и теперь функции можно писать без всяких чёрточек:
VB.NET
1
2
3
4
5
6
Function Foo(
        ByVal x As Integer,
        ByVal y As Integer
    ) As Integer
    ' ...
End Function
Во фрибесике так можно было бы сделать если бы отказаться от устаревшего синтаксиса.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
StretchDIBits
Такое не делают внутри обработчика WM_PAINT. StretchDIBits не просто копирует, но ещё и перерасчёт делает, то есть рисует.
Вообще внутри WM_PAINT следует рисовать только в лабораторных работах. В настоящих программах рисуют в памяти и внутри WM_PAINT только копируют из памяти в окно функцией BitBlt.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 16:52
Цитата Сообщение от Замабувараев Посмотреть сообщение
Потому что несколько инструкций на одной строке. Одна строка = один оператор.
Так я писал про код, а ты про хедеры. В хедерах оно очень даже понятно.

Как должно быть и понятно что прототипы, константы и массивы можно держать в основном модуле
и не распылять на хедер, это имеет смысл только в случае если не работаешь с этими данными
и если нет необходимости в монолитности. Да и в принципе единых правил и мнений на конкретно
бейсике по этому поводу нету. Даже наоборот, люди часто писали небольшие проги одном файле,
была такая практика. Это всё кстати пошло именно с QBasic, из-за того что ему подрезали модульность,
там нельзя было использовать INCLUDE и вся "модульность" заключалась в копипасте
из исходника в исходник DEF Fn-функций. Люди пристрастились, что характерно именно этот
"кастрированный" диалект был очень популярен, из-за чего люди его постоянно путали с полноценной
версией, которая послужила толчком к созданию FB.

Цитата Сообщение от The trick Посмотреть сообщение
Ну и BeginPaint возвращает прямоугольник который нужно обновить, а не все окно если важна производительность.
Там обновить требуется весь буфер, т.к. в моём случае отрисовка идёт с помощью стороннего FBGfx
и формально (для общего случая) никто не знает какая область нуждается в отрисовке. Грубо говоря
это аналог FB-шного FLIP. Это писал в принципе ради интереса. Но как понимаю в данном случае это
единственный вариант как можно сторонний буфер разного масштаба вывести и других вариантов особо нет.

Цитата Сообщение от Замабувараев Посмотреть сообщение
В настоящих программах рисуют в памяти и внутри WM_PAINT только копируют из памяти в окно функцией BitBlt.
В настоящих программах этот GDI использовать и не собираюсь, это был старый эксперимент.
0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 62
07.03.2024, 16:57  [ТС]
locm,
Цитата Сообщение от locm Посмотреть сообщение
Просто основной вопрос - что они могут.
Очень многое. По суди это взаимодействие с системой.
Если говорить о графике, есть GDI и GDI+.
Записал в свои планы по изучению.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 17:04
Цитата Сообщение от Замабувараев Посмотреть сообщение
Вот в Visual Basic.Net эту чёрточку в 2010 году наконец‐то сделали опциональной, и теперь функции можно писать без всяких чёрточек:
Меня не интересует .NET сам по себе, не буду прыгать с языка на язык, уже напрыгался в юности.
Как и растягивание прототипов ввысь. Мы один скролл заменяем на другой. Проще писать как пишется
и скролить как скролится. Имхо - надуманная проблема.
Тем не менее до правого скролла мышкой тянуться дальше, чем до нижнего, чё не делай а физиологию не обманешь.
Ну или почему в редакторах жёстко не зафиксировано 80 строк. - Да нет таких стандартов и всё.
Это делают чтобы на печать код выводить, WEB сервисы - по той же причине, чтобы человек мог распечатать,
это считай финализация кода. Можно написать прогу, которая это делать будет автоматически когда
проект готов. А читать это чудо нифига не удобно, особенно когда нет общей тенденции так делать, а её
нет и слава богу не будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2024, 17:04
Помогаю со студенческими работами здесь

Отладка Кода
{ Console.WriteLine("Привет пользователь. Как тебя зовут?"); string name = Console.ReadLine(); ...

Отладка кода
Я на форуме давно... и вот стало мне жутко интересно, кто как код отлаживает... потому 99% начинающих вообще никогда не слышали про...

Отладка кода
Олимпиадная задача : вводятся N строк описания товаров (стоимость, время завоза и время вывоза), N строк описания запросов (время захода...

Отладка кода
программа для удаления повторяющихся элементов в строке flag::Int->->Int flag n=FALSE flag n(x:xs) = if x ==n then TRUE ...

Отладка кода
Помогите пожалуйста отладить код. Собрал вот такое #include<iostream> int Check(int a) { int b; for(b = a * a; a &&...


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

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »