Mikle писал(а):Сделай текущей папку, где лежит DLL, вызови какую-нибудь функцию из неё. Теперь можно вернуть прежнюю текущую папку, DLL уже не потеряется.
Хакер писал(а):Есть мой кирпич — «вызов функций по указателю»
Don Leno писал(а):Можно подробнее? Пример хотя бы...
iGrok писал(а):Don Leno писал(а):Можно подробнее? Пример хотя бы...
Пример ЧЕГО?! Смены текущей папки? Пример использования ChDir, что ли, нужен?
Mikle писал(а):Сделай текущей папку, где лежит DLL, вызови какую-нибудь функцию из неё. Теперь можно вернуть прежнюю текущую папку, DLL уже не потеряется.
Mikle писал(а):Сделай текущей папку, где лежит DLL, вызови какую-нибудь функцию из неё.
I'm SorryQwertiy писал(а):Don Leno, вопрос был не тебе.
Qwertiy писал(а):А ято если не вызывать саму функцию, а передать её в другую?
Хакер писал(а):Кого передать? Куда передать?
Private Declare Function DoSmth Lib "smth.dll" () As Long
DoSmth
SomeMyFunc(AddressOf DoSmth)
Хакер писал(а):Нельзя AddressOf применять к Declare-функции.
Call DoSomething (AddressOf Foo)
push 1234
call DoSomething
Хакер писал(а):В случае с Declare-функциями, пришлось бы делать усложнение в компиляторе
Хакер писал(а):Никого же не смущает, что в JS нельзя получить адрес функции?
Qwertiy писал(а):Эм.. Адрес нужен только ради вызова. А передать функцию, чтобы её потом вызвать в js вполне можно. Более того, там почти всё на этом построено
Хакер писал(а):Неправильная логика. В VB обладание адресом не даёт тебе возможность вызвать её. Оно даёт тебе просто бесполезное число (бесполезное без моего кирпича).
Хакер писал(а):Тебе дают объект, олицетворяющий функцию.
Хакер писал(а):А вообще: «ООП — наше всё». Поэтому, вместо указатель на функции надо использовать ссылки на интерфейсы, поддерживающие нужные методы.
Qwertiy писал(а):Ага, каждую однострочную функцию, используемую в одном месте, в отдельный класс и этот класс в отдельный файл.
Хакер писал(а):И что, часто приходится однострочные фукнкции вызывать по указателю?
Qwertiy писал(а):В js вообще постоянно, в .NET'е в основном предикаты
c = (function(x, y) { return x + y; })(a, b);
c = a + b;
Qwertiy писал(а):Заметь, в Си++ добавили лямбда-функции, чтобы даже функцию не выносить
Хакер писал(а):
- Код: Выделить всё
c = (function(x, y) { return x + y; })(a, b);
Хакер писал(а):В итоге это приводит к тому, что сотни примерно одинаковых анонимных функций равномерно распределены по коду, хотя это могла бы быть одно унифицированная функция.
Qwertiy писал(а):Ключевое слово - примерно
Хакер писал(а):Конечно, это и плохо.
Mikle писал(а):Don Leno, а на чём написана твоя DLL?
Don Leno писал(а):Написана на Visual Basicе
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 48