Есть ли у вас примеры использования VB6 в программировании с запуском? - PullRequest
5 голосов
/ 01 октября 2009

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

Но я бы хотел увидеть больше примеров того, как можно обойти ограничения VB6. Например, однажды я нашел некоторый код для использования указателей в VB6, совершая вызовы в ОС Windows. В результате некоторые манипуляции со строками в больших документах (около 2 МБ) были сокращены с 30 минут до чуть более 3 секунд. У кого-нибудь есть другие примеры выхода за пределы VB6?

N.B. не VB.Net.

Ответы [ 7 ]

6 голосов
/ 01 октября 2009

Один неприятный трюк заключался в злоупотреблении CallWindowProc для вызова произвольного кода путем передачи указателя на него. Это технически нарушает контракт этой функции, поскольку предполагается, что он будет использоваться только с дескрипторами (не указателями прямого кода), полученными через GetWindowLong; но на практике так мало людей на самом деле знают это, что реализация вынуждена разрешать произвольные указатели кода. Это позволяет вам вызывать любой указатель на функцию, если он stdcall, и принимает 4 аргумента того же размера, что и WndProc аргумент.

Еще один неприятный трюк, который является следствием вышеизложенного, заключается в том, что вы можете динамически генерировать код таким образом - просто вставьте его в байтовый массив и используйте CallWindowProc для перехода к нему. Таким образом, вы можете встроить не-VB6-собственный код в приложение VB6 без каких-либо внешних DLL. Конечно, в эпоху NX-битов, включенных по умолчанию, это, вероятно, уже не такая уж хорошая идея (если она когда-либо была, то есть) ...

5 голосов
/ 01 октября 2009

Джоэл сказал кое-что хорошее о VB6 в 2001 году.

Многие программы VB6 - это спагетти, либо потому, что они сделали так быстро и грязные разовые, или потому что они написано взломать программисты без обучение объектно-ориентированному программирование, или даже структурированное программирования.

Интересно, что будет, если Вы берете первоклассных C ++ программистов, которые мечтать в указателях, и пусть они кодируют в VB6. Что я обнаружил в Fog Creek было то, что они стали супер-эффективными кодирующие машины. Код выглядит красиво хорошо, это объектно-ориентированный и надежный, но вы не тратите время на использование инструментов которые находятся на уровне ниже, чем вы необходимость. Я потратил годы на написание кода для C ++ / MFC и годы написания кода в Visual Basic, и позвольте мне сказать вам, VB6 просто намного, намного продуктивнее ...

Одна из особенностей Visual Basic 6 в том, что это не всегда дает тебе доступ к полному репертуару Windows-вкусности, которые нужно сделать отполированное приложение. Но что это действительно лучше, чем любой другой среда программирования, позволяет вам зайти в код C ++ (или вызвать API C) когда вы в отчаянии или когда вам нужно эта дополнительная скорость.

Это было написано в 2001 году: при создании новой программы для Windows сегодня, IMHO, очевидным выбором для лучшей производительности является VB.Net или C #. ( Шутка: C # - это просто Visual Basic с точками с запятой .)

Возвращаясь к VB6: есть много хороших примеров того, как вызывать API-интерфейсы C, чтобы делать что-то особенное или просто работать быстрее. Вот некоторые из моих любимых ссылок:

4 голосов
/ 01 октября 2009

Я не уверен, что он вкладывает в свои бутерброды, но почти все, что можно найти в Advanced Visual Basic 6 от Мэтью Керленда - это использование VB6 в программировании. Действительно замечательные вещи.

3 голосов
/ 02 октября 2009

Не могу оставить этот вопрос без ответа, упомянув Hardcore Visual Basic Брюса МакКинни, который теперь (удивительно) доступен онлайн:

http://vb.mvps.org/hcvb.asp

Это отличная книга автора, который явно любит дух Basic.

2 голосов
/ 01 октября 2009

Понимание того, что большинство шаблонов проектирования Gang of Four основаны на реализации интерфейса, а не наследования, и, следовательно, могут быть легко использованы в Visual BASIC 6.

Возможность значительно улучшить дизайн моего приложения CAD / CAM.

1 голос
/ 02 октября 2009
0 голосов
/ 06 октября 2009

Подклассы Пола Катона, продолженные LaVolpe (http://www.planet -source-code.com / vb / scripts / ShowCode.asp? TxtCodeId = 68737 ) позволяют вам делать все, что вам нужно, подключаясь к окнам события, без сбоя IDE. При этом вы можете реализовать все, что нужно в Windows. В образцах есть сумасшедшие вещи, о которых вы никогда не думали, что это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...