Kijk eens hier
Wat ze daar ongeveer zeggen:
Maar nu zit ik met een onduidelijkheid:
1/ (VB)myMacro(array) -> (C++)bewerkingen -> (VB)temp(pointer)
ja? nog juist?
2/ dan in VB CopyMemory van first -> array (wss tikfout van die mensen op de regel erboven).
3/ Nu de onduidelijkheid:
a) is dit sneller als de array zelf opvullen in VB (array = 68 bytes, inclusief verschillende pointers naar strings).
b) hoe wordt de data in temp() nu eigenlijk gedestroyed? Want wat ik zeker niet wil zijn geheugenlekken.
Wat ze daar ongeveer zeggen:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| struct mMacro { long x; long y; }; long _stdcall GetMacro(mMacro** ppMacro, mMacro* first) { mMacro* structure = new mMacro[10]; //Populate structure[0], structure[1] etc. *ppMacro = structure; *first = temp[0]; return 10;//size of array } |
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| Private Type mmacro x As Long y As Long End Type Private Declare Function GetMacro Lib "mydll.dll" myMacro() As mMacro, first As mmacro) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) When you want to call GetMacro, write the following: Dim myMacro() As mMacro Dim temp() As mMacro Dim first As mMacro Dim lSize As Long lSize = GetMacro(myMacro, temp) ReDim temp(lSize - 1) Call CopyMemory(temp(0), first, lSize * len(first)) |
Maar nu zit ik met een onduidelijkheid:
1/ (VB)myMacro(array) -> (C++)bewerkingen -> (VB)temp(pointer)
ja? nog juist?
2/ dan in VB CopyMemory van first -> array (wss tikfout van die mensen op de regel erboven).
3/ Nu de onduidelijkheid:
a) is dit sneller als de array zelf opvullen in VB (array = 68 bytes, inclusief verschillende pointers naar strings).
b) hoe wordt de data in temp() nu eigenlijk gedestroyed? Want wat ik zeker niet wil zijn geheugenlekken.