Linda-chan
            
        Ранее я писала, что по какой-то причине вызов встроенной функции DateAdd() в VB3 прекрасно работал в Windows 3.11, но выдавал ошибку «File not found» в 32-разрядных виндах.
Неожиданно в Пойнте мне посоветовали помониторить процесс:
#orvhfn/#3
По-началу я скептически отнеслась к этой идее, поскольку Win16 приложения в 32-битных виндах работают в виртуальной машине и даже своего процесса не имеют. Мало ли, как оно там внутрях работает. Но, подумав, всё же решила попробовать, тем более, что ранее меня всё равно посещала такая идея.
Взяла FileMon (ProcMon более жёстко по отношению к ресурсам системы действует, и у меня комп как-то даже вешался от него), отфильтровала NTVDM.EXE, и посмотрела, что происходит при запуске тестовой программы. С первого раза ничего такого почему-то не заметила, а вот со второго увидела, что какой-то MSAFINX.DLL активно разыскивается в PATH, но не обнаруживается. Глянула – действительно, в системном каталоге такого файла нет, зато он есть в системном каталоге Windows 3.11. В описании – «Finance And Miscellaneous Functions for Microsoft Visual Basic». В экспортах – в том числе CIDATEADD.
Скопировала файл прямо в папку к программе, и всё неожиданно заработало OO
Решила выяснить, что это за файл такой. Поискала в каталоге с VB3 упоминания этого файла, и нашла их не только в PACKING.LST (полный список всех файлов дистрибутива с пояснениями и разбивкой на оригинальные дискеты, где их можно найти), но и в VB.HLP. Поискала в самой справке VB3, ну и в числе прочего нашла ту самую функцию DateAdd(), а в её описании, в самом конце – пояснение:
Distribution Note
When you create and distribute applications that use this function in your code, you should install the file MSAFINX.DLL in the customer's Microsoft Windows \SYSTEM directory. The Visual Basic Setup Kit provides tools to help you write setup programs that install your applications.
Полагаю, что дело было так. В прочих виндах я VB3 таскаю прямо каталогом без какой-либо установки, разве что VBRUN*.DLL закидываю в системный каталог. Поэтому нужного файла у меня не оказалось. А вот в Windows 3.11 я прямо всё устанавливала с образов дискет, чтобы у меня группа в Диспетчере программ появилась и всё такое прочее. Ну и файл тоже установился. А столь важную пометку я никогда не читала потому, что я и так знаю, как работает функция, и в VB6 она не требует никаких дополнительных библиотек. Вот и получилось то, что получилось =_=
