
@KCC pourquoi ne pas utiliser ton hyper-sensibilité et tes indéniables talents d'écrivain pour nous pondre un best-seller??
Bon j'sais que c'est un peu tard pour une reponse, excuse moi, mais KCC il a pris des vacances on va dire ..."forcées"swolf a écrit :sans vouloir m'incruster dans une conversation d'anciens![]()
@KCC pourquoi ne pas utiliser ton hyper-sensibilité et tes indéniables talents d'écrivain pour nous pondre un best-seller??
Code : Tout sélectionner
Private Declare Function CreationStructureStandard Lib "DllPb.dll" () As Complexe
Dim VariableStructurer As Complexe
VariableStructurer = CreationStructureStandard
Code : Tout sélectionner
VariantChangeType(&pUdt->vnt, &pUdt->vnt, NULL, VT_BSTR);
Code : Tout sélectionner
Structure SafeArrayBound
cElements.i ; Number element of dimension
lLBound.i ; Lower bound
EndStructure
Structure SafeArray
cDims.u
fFeatures.u
cbElements.i
cLocks.i
*pvData.i
Dim rgsabound.SafeArrayBound(1) ; Risque de problème ici , PB ne va pas adresser automatiquement la taille
EndStructure
*Pointer.SafeArray = AllocateMemory(SizeOf(SafeArray))
*Pointer = FonctionVbQuiRenvoisUnPointeurDeSafeArray()
For Dimension = 0 To *Pointer\cDims-1
Debug "Dimension = "+Str(Dimension)
For element = *Pointer\rgsabound(Dimension)\lLBound To *Pointer\rgsabound(Dimension)\cElements
ElementSize = *Pointer\cbElements
*ptrElement = *pvData + (element * ElementSize) ; <---- TON ELEMENT EST LA !
Next
Next
Code : Tout sélectionner
Type
Grom As Integer
Kcc As "String"
Djes As Integer
End Type
Code : Tout sélectionner
Type
Grom As Integer
Djes As Integer
Kcc As "String"
End Type
Code : Tout sélectionner
Structure Complexe
String.s
Long.l
Integer.i
EndStructure
ProcedureDLL AfficheStructure(*Ptr.Complexe)
Phrase$ + Str(*Ptr\Integer) + Chr(13)
Phrase$ + Str(*Ptr\Long) + Chr(13)
Phrase$ + *Ptr\String
MessageRequester("", Phrase$)
EndProcedure
Code : Tout sélectionner
Public Type Complexe
String As String
Long As Long
Integer As Integer
End Type
Private Declare Function AfficheStructure Lib "DllPb.dll" (Variable As Complexe) As Long
Sub EmmissionStructure()
Dim VariableStructurer As Complexe
ChDir App.Path
VariableStructurer.String = "Robert"
VariableStructurer.Integer = 25
VariableStructurer.Long = 77777
AfficheStructure VariableStructurer
End Sub
Code : Tout sélectionner
Public Type Complexe
String As String
Long As Long
Integer As Integer
End Type
Private Declare Function CreationStructureStandard Lib "DllPb.dll" () As Complexe
Public Declare Sub CopyMemoryStructure Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Complexe, ByRef Source As Long, ByVal Length As Long)
Sub ReceptionStructureStandard()
Dim VariableStructurer As Complexe, Phrase As String, Pointeur As Long
ChDir App.Path
VariableStructurer = CreationStructureStandard
CopyMemoryStructure VariableStructurer, Pointeur, 20
Phrase = Str(VariableStructurer.Integer) + Chr(13)
Phrase = Phrase + Str(VariableStructurer.Long) + Chr(13)
Phrase = Phrase + VariableStructurer.String
MsgBox Phrase, vbOKOnly, "Visual Basic - Reception d'une structure Standard de la DLL"
End Sub
Code : Tout sélectionner
Structure Complexe
String.s
Long.l
Integer.i
EndStructure
ProcedureDLL CreationStructureStandard()
Static VariableStructurer.Complexe
VariableStructurer\Integer = 10
VariableStructurer\Long = 1457859
VariableStructurer\String = "Coucou je viens de la DLL et je suis une structure"
ProcedureReturn @VariableStructurer
EndProcedure
Code : Tout sélectionner
VariantChangeType(&pUdt->vnt, &pUdt->vnt, NULL, VT_BSTR);
Code : Tout sélectionner
Structure Complexe
String.s
Long.l
Integer.i
EndStructure
Global *VariableStructurer.Complexe = AllocateMemory(SizeOf(Complexe))
ProcedureDLL.i CreationStructureStandard()
*VariableStructurer\Integer = 10
*VariableStructurer\Long = 1457859
*VariableStructurer\String = "Coucou je viens de la DLL et je suis une structure"
ProcedureReturn *VariableStructurer
EndProcedure
Code : Tout sélectionner
Public Declare Sub CopyMemoryStructure Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Complexe, ByRef Source As Long, ByVal Length As Long)
Private Declare Function CreationStructureStandard Lib "DllPb.dll" () As Long
Sub ReceptionStructureStandard()
Dim VariableStructurer As Complexe, Phrase As String, Pointeur As Long
ChDir App.Path
Pointeur = CreationStructureStandard
CopyMemoryStructure VariableStructurer, Pointeur, 12
Phrase = Str(VariableStructurer.Integer) + Chr(13)
Phrase = Phrase + Str(VariableStructurer.Long) + Chr(13)
Phrase = Phrase + VariableStructurer.String
MsgBox Phrase, vbOKOnly, "Visual Basic - Reception d'une structure Standard de la DLL"
End Sub
Code : Tout sélectionner
Structure Complexe
String.s
Long.l
Integer.i
EndStructure
Global *VariableStructurer.Complexe = AllocateMemory(SizeOf(Complexe))
ProcedureDLL.i CreationStructureStandard()
*VariableStructurer\Integer = 10
*VariableStructurer\Long = 1457859
*VariableStructurer\String = "Coucou je viens de la DLL et je suis une structure"
ProcedureReturn *VariableStructurer
EndProcedure
Code : Tout sélectionner
Structure Complexe
String.s
Long.l
Integer.i
EndStructure
ProcedureDLL.i CreationStructureStandard()
*VariableStructurer.Complexe = AllocateMemory(SizeOf(Complexe))
*VariableStructurer\Integer = 10
*VariableStructurer\Long = 1457859
*VariableStructurer\String = "Coucou je viens de la DLL et je suis une structure"
ProcedureReturn *VariableStructurer
EndProcedure
Code : Tout sélectionner
CopyMemoryStructure VariableStructurer, Pointeur, 12