Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/134: Рейтинг темы: голосов - 134, средняя оценка - 4.62
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4

Общие вопросы и приёмы эффективного программирования на BASIC

27.03.2021, 15:34. Показов 33256. Ответов 391
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот как создать кнопку:
PureBasic
1
2
3
4
5
6
7
8
9
10
Dim hwndButton As HWND = CreateWindow( _
    WC_BUTTON,
    "Текст кнопки", _
    WS_CHILD Or BS_BITMAP Or BS_PUSHBUTTON Or WS_CLIPSIBLINGS, _
    10, 10, 100, 50, _
    hwndMainForm, _
    Cast(HMENU, 1000), _
    hInst, _
    NULL _
)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2021, 15:34
Ответы с готовыми решениями:

Общие вопросы по языку 1с Visual Basic
Всем привет, много информации нашел, но путевого очень мало, подскажите, пожалуйста, где можно побольше прочитать о достоинстве этого...

Приемы взаимодействия Visual Basic и SQL
При создании приложений, оперирующих базами данных, нередко возникают проблемы, связанные с организацией взаимодействия языка...

Основные понятия и приемы программирования
Помогите ответить на вопросы по С#. 1)Создание объектов.Понятия ссылки. 2)Массивы:одномерные,многомерные,непрерывные,массивы объектов. ...

391
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
19.04.2021, 13:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Замабувараев Посмотреть сообщение
Тогда проводник не сможет показывать значок и версию в описании. А ещё манифест для высокого DPI.
Так насколько я понял тут минимальный размер нужно получить. Одной секции .text достаточно для этого приложения.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
19.04.2021, 14:31  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Одной секции .text достаточно для этого приложения.
Сделал так:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* This linker script snippet is passed to ld as an implicit linker script that
   should augment the linker's default linker script. It's supposed to drop the
   objinfo section (FB compile time information) that may be added to some/all
   objects if objinfo was enabled in fbc, since this information is just bloat
   in the final binary. */
SECTIONS
{
    /DISCARD/ :
    {
        *(.fbctinf)
    }
    
    .text :
    {
        *(.text) *(.rdata) *(.idata)
    }
}
Получил екзешник 1536 байт из кода, который только вызывает MessageBox и ExitProcess.
Однако секцию .idata объединять не хочет, в файле остаются .text и .idata.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.04.2021, 14:31
Цитата Сообщение от The trick Посмотреть сообщение
тут минимальный размер нужно получить.
Не знаю, как у FB, но в PB поддержка DPI вообще не влияет на размер exe.
Манифест дописан туда, где раньше были 0
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
19.04.2021, 14:37  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Манифест дописан туда, где раньше были 0
Дописан — в смысле екзешник поправлен после создания?
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
19.04.2021, 14:48
Цитата Сообщение от Замабувараев Посмотреть сообщение
Получил екзешник 1536 байт из кода, который только вызывает MessageBox и ExitProcess.
Однако секцию .idata объединять не хочет, в файле остаются .text и .idata.
Странно, студийный линкер все без проблем объединяет.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Не знаю, как у FB, но в PB поддержка DPI вообще не влияет на размер exe.
Манифест дописан туда, где раньше были 0
Это из-за файлового выравнивания секций (0x200 - по умолчанию).
0
Эксперт по электронике
6875 / 3298 / 340
Регистрация: 28.10.2011
Сообщений: 12,929
Записей в блоге: 7
19.04.2021, 15:20
Цитата Сообщение от Замабувараев Посмотреть сообщение
Получил екзешник 1536 байт из кода, который только вызывает MessageBox и ExitProcess.
На PB 1КБ. Если выровнять секции по границе 16 байт будет, будет еще меньше.
Вложения
Тип файла: zip MsgBox.zip (1.1 Кб, 20 просмотров)
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
20.04.2021, 05:41  [ТС]
А у меня не получается объединить секции .text и .idata.

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

Я уверен, что вы сделаете ещё меньше и жду вашего результата.
Вложения
Тип файла: zip test.zip (6.6 Кб, 10 просмотров)
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.04.2021, 06:25
Цитата Сообщение от Замабувараев Посмотреть сообщение
Я уверен, что вы сделаете ещё меньше
Я решу эту задачу в 2 строки (против ваших 160):
PureBasic
1
2
InitNetwork()
MessageBox_(0,GetHTTPHeader("https://www.cyberforum.ru/"),@"Header",0)
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
20.04.2021, 06:31  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я решу эту задачу в 2 строки (против ваших 160):
А результат где?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.04.2021, 06:40
Цитата Сообщение от Замабувараев Посмотреть сообщение
вот вам программа
И ещё вопрос по самой программе (вроде уже было такое с другой программой):
Почему она не закрывается после выполнения задачи? Я закрыл диалоговое окно, больше она не нужна, но она продолжает висеть в памяти.

Цитата Сообщение от Замабувараев Посмотреть сообщение
А результат где?
Так запустите, есть же у вас PureBasic
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
20.04.2021, 06:52  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Так запустите, есть же у вас PureBasic
Нет, мне нужен екзешник.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Почему она не закрывается после выполнения задачи?
Которая скачивает страницу с сайта? Коробка сообщений пытается показать очень длинный текст страницы, идёт большая внутренняя работа в потрохах WinAPI, но результат не умещается и коробка сообщений сбоит.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.04.2021, 07:31
Цитата Сообщение от Замабувараев Посмотреть сообщение
Коробка сообщений пытается показать очень длинный текст страницы
Та у вас там ещё должен быть текст страницы?
Просто у меня только заголовок показывает и всё.

Потому этот код тоже только заголовок показывает
PureBasic
1
2
InitNetwork()
MessageBox_(0,GetHTTPHeader("https://www.cyberforum.ru/"),@"Header",0)
Для скачивания всей страницы естественно кода будет больше. Где то на 5-7 строк.
Цитата Сообщение от Замабувараев Посмотреть сообщение
но результат не умещается и коробка сообщений сбоит
Согласен, проверил на своём коде, результат аналогичный.
Значит нужно сбросить в файл и уже содержимое файла вывести на экран.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.04.2021, 07:39
Вот так будет с показом результата в файле
PureBasic
1
2
3
4
5
6
7
InitNetwork()
MessageBox_(0,GetHTTPHeader("https://www.cyberforum.ru/"),@"Header",0)
If ReceiveHTTPFile("https://www.cyberforum.ru/", GetTemporaryDirectory() + "url.txt")
     RunProgram(GetTemporaryDirectory() + "url.txt")
  Else
      MessageBox_(0,@"Ошибка доступа к сайту",@"Content",0)
EndIf
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
20.04.2021, 12:02  [ТС]
78ио969лшовазжт
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Для скачивания всей страницы естественно кода будет больше. Где то на 5-7 строк.
Эти пять‐семь строчек кода на выходе дают 50 килобайт.
А где же езкешник на 2048 байт?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
InitNetwork()
Зачем вообще существуют такие «операторы» и «команды»? PureBasic прекрасно видит какие функции есть в коде и может самостоятельно внутри себя вставить необходимые инициализации.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.04.2021, 14:05
Цитата Сообщение от Замабувараев Посмотреть сообщение
Эти пять‐семь строчек кода на выходе дают 50 килобайт.
Мне кажется вы отстали от жизни лет на 20
Кого сейчас волнуют лишние 50 - 250 КБ? У меня HDD на 2TБ и оперативки 16 Гиг.
Но даже комп 20 летней давности под WinXP легко запустит мою программу на Пурике
Цитата Сообщение от Замабувараев Посмотреть сообщение
PureBasic прекрасно видит какие функции есть в коде и может самостоятельно внутри себя вставить необходимые инициализации.
То же самое меня всегда удивляло наличие в FB таких конструкций как
#include once "InputDataDialogProc.bi"
#include once "win\commctrl.bi"
#include once "win\ole2.bi"
#include once "windows.bi"

и т.п.
Неужто FreeBasic сам не видит какие функции есть в коде и не может самостоятельно открыть нужную библиотеку?
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
20.04.2021, 14:47  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Неужто FreeBasic сам не видит какие функции есть в коде и не может самостоятельно открыть нужную библиотеку?
Это не библиотеки, это файлы с исходным кодом.
В файлах исходного кода нет библиотек.
Компилятору вообще не надо открывать библиотеки, компилятор только вставляет вызов функции, ничего больше.
Открывать библиотеки — это задача линковщика.
0
Эксперт по электронике
6875 / 3298 / 340
Регистрация: 28.10.2011
Сообщений: 12,929
Записей в блоге: 7
20.04.2021, 14:57
Цитата Сообщение от Замабувараев Посмотреть сообщение
Это не библиотеки, это файлы с исходным кодом.
Это не важно.
Пусть FB просканирует папку с заголовочными файлами и сам подключит те что используются в коде. Ведь FB
Цитата Сообщение от Замабувараев Посмотреть сообщение
прекрасно видит какие функции есть в коде и может самостоятельно внутри себя вставить необходимые
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
20.04.2021, 15:14  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Кого сейчас волнуют лишние 50 - 250 КБ? У меня HDD на 2TБ и оперативки 16 Гиг.
Я вижу, вы зашли сразу с козырей.
Есть ли у вас ещё какие‐нибудь доводы о пользе раздутого программного обеспечения для процессора, благотворном воздействии на жёсткий диск и выгоды для оперативной памяти?

Добавлено через 11 минут
Цитата Сообщение от locm Посмотреть сообщение
Пусть FB просканирует папку с заголовочными файлами
Нет, компилятор должен сканировать только те файлы, которые указали явно.
Иначе у вас будет Ambiguous Function Names (конфликт имён) для сторонних функций.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.04.2021, 15:31
Цитата Сообщение от Замабувараев Посмотреть сообщение
Есть ли у вас ещё какие‐нибудь доводы
Скорость разработки + кросплатформенные решения против экономии в 50 КБ.
Я на ваш последний код потратил 2 минуты, и он будет работать на всех 3-х системах.
Вы будете писать свой ещё неделю, и скорее всего на MAC так и не допишите, допустите неизбежно несколько ошибок, т.е. большой код требует всестороннего и тщательного тестирования. В моём коде 10 строк, там и тестировать нечего и исправить легко.
Но ваш на 50 КБ меньше. Есть ли сейчас в этом смысл, сами то как думаете?
В разумных пределах. Я тоже против, когда "Hello World!" занимает 60 MБ, но + 200-300КБ, т.е. exe-шники Делфи меня уже вполне устраивают на сегодняшний день

Добавлено через 5 минут
Цитата Сообщение от Замабувараев Посмотреть сообщение
Иначе у вас будет Ambiguous Function Names (конфликт имён) для сторонних функций.
И что за трагедия? Просто переименуй. Если не можешь, то алиесы, прототипы и т.п.
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
20.04.2021, 15:57  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
кросплатформенные решения
Цитата Сообщение от Pro_grammer Посмотреть сообщение
он будет работать на всех 3-х системах
Так это вы отстали от жизни лет на 20: винапи уже давно кроссплатформенное.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Но ваш на 50 КБ меньше. Есть ли сейчас в этом смысл, сами то как думаете?
Вы просто боитесь выйти из зоны комфорта и всего того, чего нет в IDE.
Цитата Сообщение от locm Посмотреть сообщение
Пусть FB просканирует папку с заголовочными файлами
То есть на каждый файл в моём проекте компилятор будет читать 1290 файлов, результат которых всё равно будет использован только в нескольких случаях? Хорошая попытка прорекламировать SSD, но нет.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Просто переименуй.
Ну вот опять этот визуальный мусор с подчёркиваниями.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2021, 15:57
Помогаю со студенческими работами здесь

Стоит ли изучать как устроена ЭВМ для эффективного программирования
Всем дробового времени суток (пятница!!!) Стоит ли изучать как устроен ЭВМ для эффективного программирования на плюсах ?

Подскажите ссылки на приемы программирования для Embedded
Народ! Подскажите пожалуйста ссылки, на приемы и упражнения по программированию, с разьяснениями по встраеваемому ПО. Заранее благодарю!

Нужны сайты про C#, приемы, рецепты, трюки программирования
Не советуйте msdn или книгу. Справочник должен быть похож на другие стандартные справочники как у delphi, которых полно в инете, а к C#...

Интересны приемы программирования, о которых не пишут в книгах, а которые узнаются на практике
интересны приемы программирования на C# те о которых не пишут в книгах, которые узнаются на практике. какие OpenSource проекты можете...

Общие вопросы.
Доброго времени суток! После изучения Паскаля, решил перейти на изучение С/С++, прочитал много мануалов для новичков, но накопились...


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

Или воспользуйтесь поиском по форуму:
380
Ответ Создать тему
Новые блоги и статьи
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru