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

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

27.03.2021, 15:34. Показов 33605. Ответов 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
Эксперт по электронике
6994 / 3310 / 341
Регистрация: 28.10.2011
Сообщений: 12,990
Записей в блоге: 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
Эксперт по электронике
6994 / 3310 / 341
Регистрация: 28.10.2011
Сообщений: 12,990
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru