
Мы живём во времена, когда Дельфи – это ультрабыстро, ультраэффективно, ультракомпактно и почти не блевотно.
Мы живём во времена, когда Дельфи – это ультрабыстро, ультраэффективно, ультракомпактно и почти не блевотно.
Забавный путь у моего самописного скринсейвера. Сначала я написала его на VB5 по аналогии с примером от MS. Потом переписала на C, взяв за основу пример GUI болванки из VC++ 6. А теперь вот портировала на FreeBasic.
Разработчик VirtualDub про Рэймонда Чена.
I love reading his blog because it's full of great information, but I hate reading it because every time I do I have to fix more bugs.
Как заставить панель управления показывать нормальное название скринсейвера, а не имя его екзешника:
https://stackoverflow.com/q...n-the-drop-down-list
Как всё же заставить панель управления показывать нормальное название скринсейвера, а не имя его екзешника:
https://stackoverflow.com/q...own-in-the-drop-down
Вот как раз столкнулась со вторым вариантом: всё есть, строка в ресурсах, файл в System32, а не работает. Оказалось, файл назывался DesktopScreenSaver.SCR. Переименовала в DesktopS.SCR, и тут же всё заработало как надо.
Достать старые бэкапы, которые обычно делаю перед тем как начать вносить изменения в программу. Распаковать их. Последовательно сверять WinMerge, пытаясь понять, что изменилось. Наваять ченджлог.
Почему на FB DOS приложение написать можно, Win32 приложение написать можно, а Win16 приложение – нет?
Решила на FreeBasic написать простенькую программу. Уже в лёгком шоке. Оказывается, в FreeBasic нельзя просто взять и получить командную строку в оригинальном виде. Есть функция Command(), которая должна возвращать её, но на деле рантайм делает так. Сначала он парсит командную строку, разбивает на элементы и даёт доступ к результату через ARGC/ARGV хреновины. Потом при вызове Command() он СОБИРАЕТ ПОЛУЧЕННОЕ В ОДНУ СТРОКУ и возвращает. Тоесть это:
1 2 3 "4 5 6"
Превращается в это:
1 2 3 4 5 6
Более того, он без спросу, типа для совместимости с линупсом делает развёртывание масок на уровне самой программы, а не оболочки. Это:
*.txt
Превращается в это:
1.txt 2.txt 3.txt
Сюрприз, сюрприз! В доках сказано, как это непотребство выключить, но во-первых для каждой платформы это делается своим костылём, а во-вторых оно не работает.
Короче, действовать придётся, как водится, методом кишлака: GetCommandLine() и вычленением екзешника.
Поборола в программе баг, который проявляется в Windows 98. Обратная совместимость at it's best!
Печально, что в интернетах нынче днём с огнём не сыщешь инструкций по сетевой настройке вибишных ActiveX EXE в современных системах. В последний раз я это дело запускала в Windows 98 (и вроде бы в XP) через DCOM и Remote Automation, а сейчас никак не могу.
Кстати, ранее я похожую фигню проворачивала с постилкой на Тумблер. API v2 в VB я не осилила, поэтому просто использовала генерирующийся для каждого запроса скрипт на Руби, где уже был клиент для Тумблера.
Заработал постинг на Dreamwidth. Сначала они сделали форвардинг на HTTPS, и мой HTTP клиент для прог на VB отвалился (всё руки не дойдут переписать и добавить поддержку HTTPS). Не беда, взяла WinHTTP клиент. Но тут оказалось, что на DW ещё и шифрование подкрутили, а у меня XP. В принципе WinHTTP работает на Нанами, но мне лень запускать постилку на отдельной машине. Попробовала пару костылей, в том числе всёже запуск куска постилки на Нанами через DCOM, но что-то ничего не заработало. В итоге плюнула и запилила вызов WGet из программы. UNIX way, блеать! Осталась, конечно, пара недоработок, но продукт внутренний, и по ходу дела я доведу всё до ума.
Сначала не могла понять, о чём ведут речь джентльмены в камментах:
http://juick.com/m/2952793#3
Всё же я никогда не привыкну к тому, что в светлом настоящем использование переменных без какого-либо объявления – норма и признак хорошего языка.
If Ret = True Then
90% ПО для нового американского истребителя F/A-22 написано на… Ada
Судя по тому, что жизненный цикл современного боевого самолета достигает 30-40 лет, языку Ada светит долгая и счастливая жизнь
Люблю условную компиляцию в VB6. Казалось бы, если какой-то блок выкидывается по условию, то IDE и компилятор должно меньше всего беспокоить, что там происходит. Ан нет. Очепятаешься в таком блоке – ошибка. Объявишь переменную не с тем типом – снова ошибка. Последнее особенно досадно, ибо условная компиляция может использоваться для выкидывания кода, который, скажем, использует хитрую библиотеку. Типа, если на машине зарегистрирована библиотека X, то подключаем её к проекту, ставим нужное условие, скажем, в свойствах проекта и компилируем с ней. Если нет – обходимся своими силами. А не работает – дай библиотку, IDE не узнаёт тип данных, который в екзешник всё равно не попадёт. Единственная польза от такого поведения – хак с именами элементов перечислений, которые любят терять регистр символов, но и тот – борьба с багом самой IDE.
Пока одни рубят на собеседованиях кандидатов, использующих строки с разделителями вместо Array(), другие пишут код как в ответе вот тут:
https://otvet.mail.ru/question/169097620
При чём это код, взятый из коммерческого продукта.
The code builds just fine except that you get a linker error that makes no sense. (Let’s face it, most linker errors make no sense until you put on your linker-colored glasses.)
[...]
There’s some good news and bad news about this error message.
The good news is that this error message is going away. The bad news is that it’s being replaced with a different error message.
Как хранить конфиги скриптов? Использовать отдельные файлы или системные средства (текстовые конфиги или реестр в Windows, например)? Использовать отдельные скрипты на том же языке с инициализацией переменных и вызывать их из главного скрипта? Или прямо в самом скрипте писать инициализацию переменных и пометки: «Настраивать здесь»? Кто как делает?
Сколько лет прошло, а до сих пор бомбит от этой истории. Гибридная программа с атомами и драйвером, блеать.
https://ithappens.me/story/9251
Невероятно! Уже 35 камментов в обсуждении VBA, и до сих пор ни одного про GoTo!
https://cauf.point.im/mirrm