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

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

21.02.2024, 01:11. Показов 18211. Ответов 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
787 / 307 / 17
Регистрация: 21.01.2023
Сообщений: 529
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
5044 / 1718 / 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
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,062
Записей в блоге: 7
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
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
07.03.2024, 15:24
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Стоило бы задать вопрос разработчикам 7-й винды(классич режим), почему при перетаскивании окна
верха экрана, когда на весь экран рисуется прозрачный прямоугольник
Ну тут вопрос чем и как рисуется этот прямоугольник. Я написал про конкретно AlphaBlend функцию из GDI если сравнивать е к примеру с TransparentBlt.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 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,256
Записей в блоге: 4
07.03.2024, 15:44
Цитата Сообщение от locm Посмотреть сообщение
На чем базируется FBGfx?
Сначала пытается инициализировать ОпенГёл, если не сработало, переходит на GDI+, если и это не сработало, то отказывает на GDI.
FBGfx примитивна и только и может, что выводить точки, линии, круглешки и прямоугольники. Даже GDI из Win95 умеет больше.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
а лучше
вообще не применять, что сделано, например, в прототипах в хедерах FB, вы же любите
приводить в пример FB. Упрекните авторов там. Мол чё за фигня.
Эти заголовочники никто вручную не пишет. Там есть утилита, которая си‐заголовочники переделывает в бесик‐заголовочники.
Разработчики решили взять заголовочники из проекта mingw, а не оригинальные от корпорации Микрософт. В mingw тоже все функции в одну строку объявлены.
В оригинальных же заголовочниках по WinAPI от корпорации Микрософт всё как надо: каждый параметр на отдельной строке, подробно прокомментирован, у каждой функции описание, у каждой константы назначение. Читается очень легко, как литературный роман, а не какой‐нибудь си‐код.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 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,256
Записей в блоге: 4
07.03.2024, 15:47
Цитата Сообщение от Quiet Snow Посмотреть сообщение
иначе укороченный
Потому что несколько инструкций на одной строке. Одна строка = один оператор.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 15:48
Цитата Сообщение от Замабувараев Посмотреть сообщение
В оригинальных же заголовочниках по WinAPI от корпорации Микрософт всё как надо: каждый параметр на отдельной строке
В хедерах или в MSDN?
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
07.03.2024, 15:50
Quiet Snow, запусти отрисовку в цикле через AlphaBlend и увидишь что там ничего не тормозит. В конкретно в твоем случае что там тормозило - я не знаю, это гадание.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2024, 15:51
Цитата Сообщение от Замабувараев Посмотреть сообщение
Потому что несколько инструкций на одной строке. Одна строка = один оператор.
Это концепт максимальной читаемости кода.
Но как уже указывал могут быть некритичные отступления от этого концепта ради выгоды.
0
 Аватар для Mikle Quits
787 / 307 / 17
Регистрация: 21.01.2023
Сообщений: 529
07.03.2024, 16:00
Цитата Сообщение от Quiet Snow Посмотреть сообщение
могут быть некритичные отступления от этого концепта ради выгоды
Иногда даже ради читаемости. Сам не люблю городить несколько операторов в одной строке, но такие варианты допускаю:
Visual Basic
1
ix = Int(x): iy = Int(y): iz = Int(z)
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 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,256
Записей в блоге: 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
5044 / 1718 / 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
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
07.03.2024, 16:28
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Нашёл код. Короче там вот чё:
И где-тут AlphaBlend?
Ну и BeginPaint возвращает прямоугольник который нужно обновить, а не все окно если важна производительность.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 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
5044 / 1718 / 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
Сообщений: 65
07.03.2024, 16:57  [ТС]
locm,
Цитата Сообщение от locm Посмотреть сообщение
Просто основной вопрос - что они могут.
Очень многое. По суди это взаимодействие с системой.
Если говорить о графике, есть GDI и GDI+.
Записал в свои планы по изучению.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 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
Ответ Создать тему
Новые блоги и статьи
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить сумму и количество положительных элементов массива, расположенных в четных строках. Решение: Создан документ с. . .
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности. . . .
Обработка трёх чисел: утроение и возведение в степень
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Даны три действительных числа. Утроить те из них, значения которых неотрицательны, и возвести в четвертую степень отрицательные. . . .
Расчёт стоимости яблок по весу
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Написать программу вычисления стоимости некоторого количества (по весу) яблок. Решение: Создан документ, с табличной частью. . .
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru