utiliser l'adresse d'une structure
utiliser l'adresse d'une structure
Salut, pour ma lib http, on passe l'adresse d'une structure à une fonction.
La structure contien tous les paramètre pour utiliser http.
Mais quant je compile, il me dit qu'il y à une erreur.
J'ai utilisé cette sintax.
ProcedureDLL.L HTTP_Connect(Structure_ADDR)
HTTP_Type = Structure_ADDR\HTTP_Type
EndProcedure
Et il me sort une erreur à: HTTP_Type = Structure_ADDR\HTTP_Type.
Quelqu'un aurait un code pour pouvoir utiliser l'adresse de la structure?
Merci.
La structure contien tous les paramètre pour utiliser http.
Mais quant je compile, il me dit qu'il y à une erreur.
J'ai utilisé cette sintax.
ProcedureDLL.L HTTP_Connect(Structure_ADDR)
HTTP_Type = Structure_ADDR\HTTP_Type
EndProcedure
Et il me sort une erreur à: HTTP_Type = Structure_ADDR\HTTP_Type.
Quelqu'un aurait un code pour pouvoir utiliser l'adresse de la structure?
Merci.
Code : Tout sélectionner
ProcedureDLL.L HTTP_Connect(*Structure_ADDR.TaStructure)
HTTP_Type = *Structure_ADDR\HTTP_Type
EndProcedure
Code : Tout sélectionner
Structure AZERTY
CODE.L
endstructure
ProcedureDLL.L MyFunc(*Var.AZERTY)
Type = *Var\CODE
procedurereturn Type
endprocedure
@++
Et si je modifie?
Salut, et si je modifie un champs dans la structure il cera modifier que dans la structure de ma dll, ou les modifications cerons aussi sur la structure qui à été passé en paramètre?
Merci!
Merci!
Voilà un exemple plus parlant , ici c'est l'addition de 2 vecteurs, peut importe que tu saches ce que c'est , disont c'est la representation d'un point dans un espace 3D en XYZ pour faire simple.
Ma fonction ADD_VECTOR3() additionne 2 vecteurs le vecteur A au vecteur B, 2 paramètres sont donc nécéssaire au bon fonctionnement de la procedure.
j'ai choisi de mettre le resultat dans VectorA (rf:procedure)
j'aurais pu mettre les 2 ou ajouté un 3° paramètres afin de lui donner le resultat.
Ma fonction ADD_VECTOR3() additionne 2 vecteurs le vecteur A au vecteur B, 2 paramètres sont donc nécéssaire au bon fonctionnement de la procedure.
Code : Tout sélectionner
ADD_VECTOR3(*VectorA.VECTOR3,*VectorB.VECTOR3)
j'aurais pu mettre les 2 ou ajouté un 3° paramètres afin de lui donner le resultat.
Code : Tout sélectionner
Structure VECTOR3
X.f
Y.f
Z.f
EndStructure
ProcedureDLL.L ADD_VECTOR3(*VectorA.VECTOR3,*VectorB.VECTOR3)
*VectorA\X = *VectorA\X + *VectorB\X
*VectorA\Y = *VectorA\Y + *VectorB\Y
*VectorA\Z = *VectorA\Z + *VectorB\Z
EndProcedure
MaPosition_A.VECTOR3
MaPosition_A\X = 150
MaPosition_A\Y = 255
MaPosition_A\Z = 384
MaPosition_B.VECTOR3
MaPosition_B\X = 550
MaPosition_B\Y = 755
MaPosition_B\Z = 34
Debug "VECTOR A ORIGINAL"
Debug "--------"
Debug "X="+Str(MaPosition_A\X)
Debug "Y="+Str(MaPosition_A\Y)
Debug "Z="+Str(MaPosition_A\Z)
Debug "--------"
Debug "VECTOR B ORIGINAL"
Debug "--------"
Debug "X="+Str(MaPosition_B\X)
Debug "Y="+Str(MaPosition_B\Y)
Debug "Z="+Str(MaPosition_B\Z)
Debug "--------"
Debug ""
Debug ""
Debug ""
Debug "ADD VECTOR B TO VECTOR A()"
Debug ""
Debug ""
Debug ""
ADD_VECTOR3(MaPosition_A,MaPosition_B)
Debug "VECTOR A"
Debug "--------"
Debug "X="+Str(MaPosition_A\X)
Debug "Y="+Str(MaPosition_A\Y)
Debug "Z="+Str(MaPosition_A\Z)
Debug "--------"
Debug "VECTOR B"
Debug "--------"
Debug "X="+Str(MaPosition_B\X)
Debug "Y="+Str(MaPosition_B\Y)
Debug "Z="+Str(MaPosition_B\Z)
Debug "--------"
Marche pas dans une library
Salut, déjà merci pour l'aide!
Mais c'est code ne marche pas dans une library. Quant je compile, il me dit structure no found (pour la structure passé en paramètre).
Ce que je veu faire, ces que via le programme qui appelle ma library, on puisse récuperrer dans une structure toutes les info (entête, taille du fichier etc...) (je parle pour ma lib http).
Donc je pence qu'il faudrai déclarer une structure dans le programme client, et récupairer son adresse dans la library pour pouvoir remplir les champs entête etc...
Merci!
Mais c'est code ne marche pas dans une library. Quant je compile, il me dit structure no found (pour la structure passé en paramètre).
Ce que je veu faire, ces que via le programme qui appelle ma library, on puisse récuperrer dans une structure toutes les info (entête, taille du fichier etc...) (je parle pour ma lib http).
Donc je pence qu'il faudrai déclarer une structure dans le programme client, et récupairer son adresse dans la library pour pouvoir remplir les champs entête etc...
Merci!
la structure si tu la déclare ds ta lib , il n'y a pas besoin de la redéclarer
Fait une fct° du style :
@++
Fait une fct° du style :
Code : Tout sélectionner
proceduredll init()
structure A
B.l
endstructure
endprocedure
Library = dll par exemple
Quant je dit library, c'est par example une dll. Et si c'est bien ça que tu à compris, comme je fait après avec le programme qui utiliser cette dll avec openlibrary etc... pour récupairer les info mis dans la structure?
Merci!
Merci!
Excuse moi, mais j'ai rien compris.Quant je dit library, c'est par example une dll. Et si c'est bien ça que tu à compris, comme je fait après avec le programme qui utiliser cette dll avec openlibrary etc... pour récupairer les info mis dans la structure?
Merci!
si ta structure est déjà declarer ds ta dll, ta pas besoin de la redéclarer dans ton programme qui utilise ta structure, que se soit une dll une lib un pbi...
@++
comme j'ai dit plus haut
si cela ne fonctionne pas , fait un wrapp de ta dll dans un pbi
et dedans tu redeclares tes structures, et tu importes tes fct° avec import/endimport
@++
Code : Tout sélectionner
proceduredll init()
structure A
B.l
endstructure
endprocedure
et dedans tu redeclares tes structures, et tu importes tes fct° avec import/endimport
@++