Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: C++ и VB6.0 ??? Добавлено: 27.04.08 18:29  

Автор вопроса:  Hunter
Помогите с такими вопросами ...
Как правильно обьявить функции, переменные с++ в visual basic ?
Вот например:

Код С++
HANDLE  hFile


В VB должно получится вот так ?

Код VB
dim hFile as HANDLE


Но, вся проблема в том, что нет такого типа как 'HANDLE' ;(
Тогда что делать то ?

Еще вопрос:
Обьявление в с++ (скажем, библиотека называется packet.dll)

Код С++
BOOLEAN PacketSetMaxLookaheadsize (LPADAPTER AdapterObject)


Код VB
Public Declare Function PacketSetMaxLookaheadsize Lib _
"packet.dll" (AdapterObject as LPADAPTER)


??? правильно ли, или напутал чего ???

Еще пример:

Код с++
LPPACKET PacketAllocatePacket (void)


Код VB:
Public Declare Function PacketAllocatePacket Lib "packet.dll" () As LPPACKET


Если все верно, тогда как задекларировать это:

Код на С++
BOOLEAN PacketSetBpf (LPADAPTER AdapterObject, struct bpf_program *fp)


???

Так, теперь вопрос по структурам ...

Как перевести это на VB (Не в давайтесь в подробности - мне главное синтаксис):

Структура PACKET описывает принимаемый или передаваемый пакет. Состоит из следующих полей:

·        OVERLAPPED OverLapped – структура, описанная в DDK Windows, используется для поддержки синхронных вызовов драйвера

·        PVOID Buffer – указатель на буфер, содержащий пакет;

·        UINT Length – размер буфера;

·        PVOID Next – указатель на следующий пакет;

·        UINT ulBytesReceived – размер части буфера, содержащей «верные» данные;

·        BOOLEAN bIoComplete – показывает, содержит ли буфер «верные» данные после асинхронного вызова.


???

И последняя просьба - как это будет на VB ???:

Код С++

struct bpf_program {
UINT bf_len;
struct bpf_insn *bf_insns;
};


p.s да и еще - как создать свой тип данных в VB (ну, например, как в С++ USHORT ???)

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 27.04.08 21:55
"В языке C особенно при работе с объектами Windows, широко используется тип Handle - задающий описатели объектов. <...> При трансляции описателей в тип языка VBA ему ставится в соответствие тип Long." http://www.citforum.ru/programming/vb/vba_winapi/3.shtml

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 27.04.08 22:09
функция PacketSetMaxLookaheadsize должна быть соответственно As Boolean.

так из int можно получить uint
' Converts an unsigned integer to a long integer.
Public Function UIntToLong(ByVal Value As Integer) As Long
    If Value >= 0 Then UIntToLong = Value Else UIntToLong = &HFFFF& - Not Value
End Function

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 27.04.08 22:19
Видимо типа того. Только вот интересно, fp со звездочкой надо ByRef передавать или ByVal?

Type bpf_program
   bf_len As Long 'от 0 до 65535
   bf_insns As bpf_insn
End Type

Type bpf_insn
   ... As ...
   ... As ...
   ..........
End Type

Public Declare Function PacketSetBpf Lib "packet.dll" (ByVal AdapterObject As LPADAPTER, fp As bpf_program) As Boolean

Ответить

Номер ответа: 4
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #4
Добавлено: 28.04.08 20:05
типы с префиксом LP по сути есть переопределенные указатели, или LPTYPE в большинстве случаев эквивалентно *TYPE.
все что в си передается по указателю(*) или по ссылке(&;) в бейсике нада передавать через byref

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 28.04.08 20:13
передача массивов меня просто убивает! ох устал с ними разбираться..

Ответить

Номер ответа: 6
Автор ответа:
 Hunter



Вопросов: 23
Ответов: 71
 Профиль | | #6 Добавлено: 29.04.08 08:10
Огромное СПАСИБО ... надеюсь разберусь я с этим WinPcap ;( Эх, почему ж исходников на VB нету ((((

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам