Программирование
Веб программирование

О языке программирования VIsual Basic

 
 

Здравствуйте. Меня привела на этот сайт привязанность к языку Basic. Мне захотелось поделиться советами с теми, кто только начал программировать или уже программирует на этом языке. Видите ли, язык бейсик пожалуй, самый простой в изучении, но и возможности, предоставляемые им увы не так широки. Приложения, написанные в среде разработки MSVB не являются кроссплатформенными - это значит, что выполниться они смогут только на операционных системах Windows. Сам бейсик написан на c++. При компиляции программный код переводится в псевдокод (не нативный, как например в с++). Это значит, что программы, написанные на бейсике при выполнении интерпретируются. Любая программа, написанная на VB требует наличия в системе библиотеки-вируальной машины бейсика -MSVBVM.dll (в зависимости от версии языка может быть либо 50 либо 60). Чтобы избежать Runtime-error при попытке запустить программу, написанную на бейсике на компьютере, в операционной системе которого возможно, отсутствует эта библиотека, рекомендуется скопировать необходимые библиотеки в одну папку с Вашей программой и таким образом, распространять. Есть смысл отказаться от VB6  в пользу VB5. Различия между этими средами небольшие, но пятая версия, на мой взгляд, надежнее. Как программировать в среде Visual Basic? Прежде всего уясните: возможности самого языка крайне ограничены. Для того, чтобы написать более-менее серьезную программу совершенно необходимо использование API.

Отличную бесплатную программу для автоматической декларации WinApi можно найти в сети - ApiGen for VB.

Теперь я напишу пару советов.

* Перед запуском любого проекта непременно сначала сохраните его. Это избавит вас от головной боли по поводу пропавших данных. При неправильном вызове API (если к примеру Вы вызываете не знакомую Вам функцию) среда разработки вылетает с критической ошибкой -  не запускайте такой проект в отладчике, сначала скомпилируйте его, и запустите уже готовый exe.

* Очень большой ошибкой является создание "замкнутых наглухо" циклов, например:

do 'начало цикла

'что то делаем...

loop 'повторить все с начала

Этот цикл моментально завесит среду разработки (и всю систему).

Правильно писать так:

Private Sub Sleep Lib "Kernel32" (byval msec as long) 'декларируем процедуру из системной библиотеки, которую потом будем использовать для разгрузки цикла

do

'что то делаем....

call sleep(1000)'

loop

Исключение - когда цикл используется для чтения текстовых файлов. Там задержка не требуется:

text=""

do while not (конец файла)

text=text & (дескриптор файла).readline

text=text&vbcrlf

loop

в этом примере все содержимое открытого файла загоняется в переменную "text"

Если среда разработки зависла, можно попробовать нажать ctrl+pause(break).

Не следует писать на бейсике вредоносные программы. Поскольку в исполняемый файл включается много идентифицирующей информации, вас потенциально могут вычислить(

Я программировал на этом языке достаточно долго и пришел к выводу, что меня он больше не удовлетворяет. Сейчас я программирую на С++ Builder.

Тем, кому пришелся по вкусу язык бейсик, я советовал бы обратить внимание на следующие языки:

Autoit (Бесплатный скриптовый язык с возможностью компиляции);

PureBasic (кроссплатформенный супер-бейсик с огромными возможностями!);

FreeBasic (самый "быстрый" из всех бейсиков. Синтаксис сильно напоминает VB).

Эти компиляторы обладают намного большими  по сравнению с Visual Basic возможностями.


Есть вопросы? Спроси на нашем форуме!!
geranazavr555 [29.12.2012 20:56]

Pruvate Sub
оригинально)))

-Гепард97- [30.12.2012 11:19]

Статейка хорошая. Хочу поправить касательно циклов:

Во-первых, функция Sleep() - замораживает процесс. От зависонов это вряд ли избавит. Куда лучше юзать DoEvents - стандартная функция возвращения управления винде. Пока вам процессорное время не нужно, DoEvents отдаст его системе.

Во-вторых, нубство делать глухие циклы. Есть конструкция Do While/Do Until, работающая аналогично IF - пока условие выполняется/пока условие не выполнено - крутить цикл, иначе - закончить выполнение и передать управление следующей за Loop команде.

И в-третьих, есть замечательная команда Exit и ее подвид Exit Do. Если вам по каким-то причинам не удобны функции Until и While (например, выход из цикла осуществляется многоуровневыми условиями) - Exit Do прервет цикл.

Stertor [30.12.2012 14:55]

Да, я ошибся. Правильно читать:Private Sub
Гепард, вы не правы. Это легко проверить. Попробуйте скомпилировать глухой цикл с doEvents, запустите его, а потом посмотрите в менеджере процессов, что будет вытворять Ваша прога. Использовать DoEvents большой грех - не надо этим страдать. Везде, где нужно разгрузить цикл используйте Sleep.

Stertor [30.12.2012 15:04]

Если нужно выполнять какие-либо действия, расходующие такты (скопировать много файлов, просканировать диск, и тп.) - целесообразно создать новый поток (API "CreateThread", находится в библиотеке Kernel32.dll), параллельный потоку окна. Иначе прога неумолимо зависнет.

ЮРА [10.01.2013 16:58]

Да учите же уже VB.NET и никаких проблем. Язык с неогроничеными возможностями

Павлик [11.01.2013 18:43]

Ой блин я то думал что VB6 это "чистокровный" машиный язык а оказываться интерпритируемый. Сразу вспрмнил свои мрачные времена когда изучал Python. Как по мне лучше уж писать проги для виртуальной машины типа Java или Net.Framework чем тратить время на интерпритируемые языки. А кто подскажет код Delphi 7 тоже интерпритируемый или компилируеться на прямую???

INFINITI77730 [11.01.2013 20:53]

Да, Vb6 не идеальный язык, но и VB.Net не намного лучше -тот вообще без последнего Framework не запускается.

Abdurahim [11.01.2013 21:30]

INFINITI777
Framework устоновлен поумолчанию во всех виндах vista / 7/8
так что с этим думаю проблем нет.

INFINITI77730 [11.01.2013 21:33]

так до да,но во первых XP тоже сбрасывать со счетов пока не стоит (тем более, что последний Framework 4 встает и на нее тоже), а во вторых на многих школьных компах зачастую стоит старая сборка Windows XP, без Net.Framework

INFINITI77730 [11.01.2013 21:36]

Stretor, неплохой выбор насчет Delphi, тем более, что на нем написаны такие программы как QIP (в том числе последняя версия 2012), KMPlayer, AIMP3 и тотал коммандер.
Другое дело, что его преподают не во всех школах и ВУЗах - в моем например на первом курсе преподавали C++ под консоль, а на втором курсе- QT (c++).

alex13sh300 [11.01.2013 22:09]

Stertor, умно было сделать клиент с помощью винсока и дать другу чистую прогу бехз этой библии)) АХХАХАХ

Рашь хочешь отдать чистый ехе то надо было не винсок а Сокет

alex13sh300 [11.01.2013 22:10]

Abdurahim, проблемы есть даж на вин7 я не могу любой хлам ворк ставить так как у меня х64

EverybodyLies [12.01.2013 02:26]

"Вышеуказанный алгоритм" не попадает под определение антивируса

EverybodyLies [12.01.2013 13:22]

я про общий проект.

thetrik [13.08.2015 16:16]

Полная ересь.
Програмы на VB6 компилируются в машинный код при компиляции в нативный код (т.е. по умолчанию).
За использование Sleep в бесконечном цикле вообще нужно расстреливать.



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.