Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на Basic / VBA

Выпуск № 069
от 11.06.2003, 17:20

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 115
Отправлено ответов: 138
Активность: 120 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

masquer
Статус: Профессиональный
Общий рейтинг: 138.13
[Подробней >>]
Licvidator
Статус: Профессиональный
Общий рейтинг: 127.88
[Подробней >>]
USA-Lesh
Статус: Начальный
Общий рейтинг: 153.84
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 114. Добрый день ув.Эксперты! Есть длл... она должна вернуть приложению на ВБ 4-е числа типа Long.... П... (ответов: 3)

Вопросов: 1, ответов: 3


 Вопрос № 114

Добрый день ув.Эксперты!
Есть длл... она должна вернуть
приложению на ВБ 4-е числа типа
Long....
Посоветовали сделать так...
передать аргумент, а асме писать OffSet или Addr и получить
адрес памяти а не значение, потом просто пишешь в этот адрес
что угодно....
Пробывал... не выходит.... предавал через ByRef... аналогично..
Если кто знает как это сделать (в смысле передать аргумент).... то пожалуйста
с примером на ВБ...
Может у кого есть наработки по этой теме.... буду признателен..
заранее спасибо



Вопрос отправлен: 08.06.2003, 17:17
Отправитель: pAcU (pacu@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Доброе время суток, pAcU!
В приложении функция на асме внутри библиотеки tool.dll и объявлена как Private Declare Sub addlongs Lib "tool" (ByRef number1 As Long, ByVal number2 As Long)
Результат возвращает, как видно из примера, в первый операнд, т.е. на бейсике пришешь:
a=5
b=6
addlongs(a, b)
результат будет в а

Приложение:

Ответ отправлен: 08.06.2003, 18:16
Отправитель: masquer


Отвечает Licvidator

Здравствуйте, pAcU!
Сразу скажу, что с dll я не работал. Однако, поискав в книге (Джон Кларк Крейг, Джефф Уэбб Visual Basic 6.0 Мастерская разработчика, издание пятое, Москва, 2001) эту тему, пришел к такому выводу (подразумевается, что все четыре значения берутся от одной ф-ии):
***
Private Declare Function Test _
Lib "mydll.dll" ( _
ByRef a As Long _
) As Long
'где
'a - переменная, объявленная в dll
Dim lngA As Long
Dim lngB As Long
Dim lngC As Long
Dim lngD As Long
Dim lngE As Long
'Собственно вызов
lngA=1' - исходное условие 1
lngB=Test(lngA)
lngA=2' - исходное условие 2
lngC=Test(lngA)
lngA=3' - исходное условие 3
lngD=Test(lngA)
lngA=4' - исходное условие 4
lngE=Test(lngA)
Print lngB, lngC, lngD, lngE
***
А в С-файле, например, след. код:
***
Long _stdcall Test(LONG a)
{
return( a + a );
}
***
Возможно, я где-то ошибся, т.к., повторюсь, подобным не занимался.

Ответ отправлен: 08.06.2003, 18:51
Отправитель: Licvidator


Отвечает USA-Lesh

Приветствую Вас, pAcU!
В dll:
Function ReturnArr() as Variant
Dim Arg(3) As Long
'Здесь инициализация возвращаемого массива
ReturnArr = Arg
End Function
В приложении:
Dim Val As Variant
Val = ReturnArr
Это если все писать на VB, и dll и прогу. Есть догадка, что dll на ASM, тогда надо в ассемблерной рассылке уточнить.
Удачи.

Ответ отправлен: 09.06.2003, 03:48
Отправитель: USA-Lesh



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (34)
C / C++ (29)
Perl (7)
Builder / Delphi (18)
Pascal (29)
Basic / VBA (12)
Java / JavaScript (12)
PHP (8)
MySQL / MSSQL (7)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (31)
"Железо" (25)
Поиск информации (16)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (9)
Юристу
Гражданское право (6)
Семейное право (2)
Трудовое право (3)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное