Фан фэкт: авторка отборного NTR по «Ragnarok Online» какое-то время была VB разработчицей. Возможно, это как-то связано.
Тег vb в блоге Linda-chan
Помнится, в Windows 9x для удалённого запуска компонентов требовалась специальна программа на сервере. Одна постоянно висела в панели задач, но работала надёжнее, в вторая как-то фоном, но с ней вечно какие-то проблемы были. И ещё была утилита, которая позволяла прямо в реестре указать, что какой-то компонент должен выполняться на удалённой машине. Только это было реально двадцать лет назад, и я даже названий не помню этих программ, только иконку первой и её окошко. Ну и то, что вторая называлась dcomcnfg.exe, и нынче она вызывает MMC с оснасткой управления DCOM'ом.
Неожиданно удалось запустить ActiveX компонент удалённо. Тоесть, на одной машине зарегистрирован сервер ActiveX EXE, написанный на VB6, а на другой его объект пытается создать клиент, написанный тоже на VB6. При чём, раньше у меня всё время были какие-то проблемы, а в этот раз просто накидала тестовый проект, зарегистрировала, а на другой машине просто сделала «CreateObject(ProgID, ComputerName)», и всё. Клиент рулит объектом у себя, а код исполняется на другой машине. Единственное что, пришлось файрволл поковырять.
? StrComp("0anime", "[anime", vbBinaryCompare)
-1
? StrComp("0anime", "[anime", vbTextCompare)
1
Когда забываешь, что vbTextCompare – это не только сравнение без учёта регистра.
Вчера я узнала, что парсер VB IDE знает о ключевом слове CDecl в Declare и не ругается на него. Правда, вызов функции, объявленной так, всё равно приводит к ошибке «Bad DLL calling convention», при чём сразу же, без попытки что-либо сделать вроде загрузки DLL. Думаю, что это что-то оставшееся в наследство от QuickBasic.
Снилось, что в VB6 добавили ключевое слово «Something» для тех, кому лень писать «If Not Byaka Is Nothing».
В VB есть два вида деления: обычно и с отбрасыванием дробной части. Ну тоесть:
3 / 2 ==> 1,5
3 \ 2 ==> 1
Сегодня не могла понять, почему у меня при делении двух чисел вместо 255 получается 260. Вроде бы всё должно быть правильно. Были сомнения в точности одного из чисел, но там тогда получилось бы 256 или 254, но не такая разница. Поэкспериментировала, выяснила, что перед делением у чисел отбрасывается дробная часть, потом они делятся, и дробная часть отбрасывается снова. Вот и получилось. Честно говоря, обычно делю только целые числа и о такой особенности каждый раз очень хорошо забываю =_=
Печально, что в интернетах нынче днём с огнём не сыщешь инструкций по сетевой настройке вибишных ActiveX EXE в современных системах. В последний раз я это дело запускала в Windows 98 (и вроде бы в XP) через DCOM и Remote Automation, а сейчас никак не могу.
Люблю условную компиляцию в VB6. Казалось бы, если какой-то блок выкидывается по условию, то IDE и компилятор должно меньше всего беспокоить, что там происходит. Ан нет. Очепятаешься в таком блоке – ошибка. Объявишь переменную не с тем типом – снова ошибка. Последнее особенно досадно, ибо условная компиляция может использоваться для выкидывания кода, который, скажем, использует хитрую библиотеку. Типа, если на машине зарегистрирована библиотека X, то подключаем её к проекту, ставим нужное условие, скажем, в свойствах проекта и компилируем с ней. Если нет – обходимся своими силами. А не работает – дай библиотку, IDE не узнаёт тип данных, который в екзешник всё равно не попадёт. Единственная польза от такого поведения – хак с именами элементов перечислений, которые любят терять регистр символов, но и тот – борьба с багом самой IDE.
Dim Reader As New SAXXMLReader40
Dim Writer As New MXXMLWriter40
Но!
Set Reader = CreateObject("MSXML2.SAXXMLReader.4.0")
Set Writer = CreateObject("MSXML2.MXXMLWriter.4.0")
Что я люблю!
Разумеется, в доках подробно написано, почему они так сделали, но легче от этого не становится.
К слову, у MSXML4 имя библиотеки – MSXML2.
Я, конечно, ещё только начинаю осваивать Руби, но из всех языков с которыми я за последнее время познакомилась, именно Руби оставляет какое-то чувство комфорта при написании кода. Словно пишешь на VB7.