На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> указатель на переменную
    Люди добрые
    надо послать в DLL-ку указатель на переменную
    сложность в том, что указатель нужно послать
    в составе структуры, т.е. надо сделать:
    A.pointer = указатель на переменную B
    можно-ли так сделать в VisualBasic
    Спасибо
      Вообще, интересно... а можно узнать, что за функция и с чем её едят?
        Функция простая
        а с чем ее едят сам понять не могу
        Предположим мне надо считать сектор с гибкого диска
        нашел пример на С++ (MFC) - но на этом языке писать
        не умею. Только читать и то со словарем :)
        Попробовал перевести на VB, но появилась проблема:
        насколько я понял сначала получаем хендл соответствующего драйвера
        HANDLE hVxD=CreateFile("\\\\.\\vwin32",0,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);

        потом передаем его ф-ии DeviceIoControl, которая заставляет его
        считать необходимые данные в буфер, также передаваемый функции по
        ссылке
        fResult = DeviceIoControl(hDev, VWIN32_DIOC_DOS_DRIVEINFO,
        ®, sizeof(reg),
        ®, sizeof(reg), &cb, 0);
        буфер reg это структура:
        typedef struct _DIOC_REGISTERS
        {DWORD reg_EBX;
        DWORD reg_EDX;
        DWORD reg_ECX;
        DWORD reg_EAX;
        DWORD reg_EDI;
        DWORD reg_ESI;
        DWORD reg_Flags;
        } DIOC_REGISTERS, *PDIOC_REGISTERS;
        которая предварительно заполняется:
        reg.reg_EAX = 0x7305;
        reg.reg_EBX = (DWORD)&dio;
        reg.reg_ECX = -1;
        reg.reg_EDX = bDrive;
        reg.reg_ESI = 0x6001;
        ********************************************************
        * *
        * наиболее интересен здесь второй параметр: *
        * reg.reg_EBX = (DWORD)&dio; *
        * параметр "reg.reg_EBX" хранит адрес структуры "dio" *
        * *
        ********************************************************
        dio это тоже структура:
        typedef struct _DISKIO {
        DWORD dwStartSector; // starting logical sector number
        WORD wSectors; // number of sectors
        DWORD dwBuffer; // address of read/write buffer
        } DISKIO, * PDISKIO;
        в целом пример исходника со всеми проверками и
        декларациями есть на форуме по С++ здесь же.
        В общем когда я попытался перевести на VB уперся в строчку
        reg.reg_EBX = (DWORD)&dio;
        выдал ошибку и встал, точнее лег - спать.
        Не исключено, что если эту проблему побороть появятся новые...
        Я ведь не супер программист - так для себя...
        я вроде это посылал а оно куда-то делось :о
          нашел!!!!!
          как говорил Архимед
          я ее случайно на форум по С++ отправил
          ну и чайник.....
          З.Ы.
          форум автоматически заменяет
          (амперсанд)reg
          на символ ®
            ЛЮДИ!
            Скажите пожалуйста, если это невозможно в принципе.
              Ну почему, адрес получить можно, но стоит ли использовать косвенный вызов в VB? Это достаточно ненадёжно!
                я с удовольствием не пользовался бы этим,
                но вызов функции требует
                Есть исходник на VC++
                однако хотелось перевести на родной ВАСИК
                  Я бы написал маленюкую ActiveX DLL на C++, которая вызывает ту хитрую функцию с передачей адреса.
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0240 ]   [ 15 queries used ]   [ Generated: 17.05.24, 09:08 GMT ]