FireFenix писал(а):В итоге вроде для .NET предпочтительнее DllImport, а Declare Function типа оставлено для совместимости с VB
С этим ясно, можно и на Declare сделать, как DllImport, но нужны доп. атрибуты. Тогда уж, действительно, проще сразу DllImport использовать.
FireFenix писал(а):проще указать в параметрах функции, что параметр нужно "отмаршалить"
А если этот параметр передаётся внутренней ф-ции "А", которая в свою очередь передаёт его ф-ции "Б", объявленной через DllImport, то это нужно указывать в ф-ции "А", "Б", или в обеих? "Чутьё" мне говорит, что достаточно в "Б"...
FireFenix писал(а):Блокирование тут не много не подходит. Ты выделяешь память, которую не может контролировать GC.
Память выделена заранее, я только указываю, что эту память нужно зафиксировать, или я неверно понимаю работу GCHandle.Alloc.
FireFenix писал(а):Не помню как в 2009 студии, но в 2010 по умолчанию отступ = 4 пробелам, а в проекте по 2
Насколько помню, в любой студии 4 пробела, я и в VB6 сам меняю на 2.
FireFenix писал(а):При объявлении структур - желательно указывать тип, тогда в некоторых случаях можно избежать лишних приведений типов
Я так понял, речь не о структурах, а о
enumах? Разве тип не будет Integer по умолчанию?
FireFenix писал(а):Ну и "комментарии в коде" - лучше друзья программиста
Это моя вечная проблема
, свой код кажется настолько понятным, что в нём нечего комментировать. Никак не могу взглянуть на него глазами другого программиста.
Но, говоря "оцените стилистику в целом", я имел ввиду несколько другое - после GWBasic на QuickBasic можно продолжать использовать GoTo, всё будет работать, но гораздо лучше освоить процедуры. После QuickBasic на VB желательно приучиться-таки использовать Option Explicit и, где нужно, ООП. Я о таких же нововведениях. Кое что я учёл - теперь вместо различных LoadFromFile, Init я переопределяю несколько вариантов конструктора - это гораздо удобнее и красивее. Может что-то ещё подобное есть?
И всплыла ещё одна проблема - на Win7 X64 не работает, пишет, что была попытка загрузки программы в неверном формате, я долго искал ошибки, но не нашёл их, потом понял, что ошибок нет, не работает даже вызов DLL, написанной на C++ с единственной ф-цией "return a+b".
Win7 не даёт вызывать из .net кода нативные DLL! Причём это не относится к API. Хотя, может, замена "Declare Function" на "DllImport" изменит ситуацию, проверю.