Page 1 sur 1
Adresse des Map / List / Array
Publié : ven. 14/mars/2014 1:02
par graph100
Le problème ne se pose peut-être pas pour les Array, cependant pour les listes et les map, on ne peux pas récupérer leur "adresse".
Seulement l'adresse de l'élément courant.
C'est un problème dans le cas suivant :
Code : Tout sélectionner
Structure bla
Map *mon_test.POINT()
EndStructure
NewMap test.POINT()
*adr.bla\mon_test() = test()
le but de ce code exemple est d'assigner la map dans la structure pour un accès ultérieur. Ce serait le même problème pour une liste.
Une procédure permet de passer des map, list et array en paramètres, j'aimerais que ces fonctionnalités soient étendues pour prendre en compte le cas que je viens de souligner.
pour le moment le seul moyen d'arriver à mes fin est le suivant :
Code : Tout sélectionner
Structure bla_maitre
Map mon_test.POINT()
EndStructure
Structure bla
a.l
b.l
*map_mon_test.bla_maitre
EndStructure
InitializeStructure(variable.bla_maitre, bla_maitre)
variable\mon_test("YO")\x = 2
variable\mon_test("YO")\y = 5
Define adr.bla
adr\map_mon_test = @variable
Debug adr\map_mon_test\mon_test("YO")\y
Re: Adresse des Map / List / Array
Publié : sam. 15/mars/2014 17:01
par nico
Tu peux faire comme ceci aussi:
Code : Tout sélectionner
*pointer.Point = FindMapElement(variable\mon_test(), "YO")
Debug *pointer\y
Re: Adresse des Map / List / Array
Publié : lun. 17/mars/2014 21:13
par graph100
non.
La différence est que tu accèdes directement à l'adresse d'un élément.
Le but du code que j'ai posté est d'obtenir l'adresse de la MAP dans sa globalité, de l'objet map pour pouvoir l'utiliser ensuite.
Re: Adresse des Map / List / Array
Publié : jeu. 23/avr./2015 8:03
par PAPIPP
Bonjour Graph_100
et comme cela
Code : Tout sélectionner
NewMap TEST1.POINT()
test1("GH")\x=2
test1()\x=5
Debug " **** ADRESSES MAP"
Debug TEST1()
; Debug TEST1()-SizeOf(POINT)
Debug @test1("GH")\x
Debug @test1()\y
NewList LISTE.POINT()
AddElement(LISTE())
LISTE()\x=4
LISTE()\Y=9
Debug " **** ADRESSES LISTE"
Debug liste()
Debug @liste()\x
Debug @liste()\Y
A+
Re: Adresse des Map / List / Array
Publié : jeu. 23/avr./2015 9:28
par PAPIPP
Bonjour à tous
Je viens de regarder le généré ASM avec l'instruction copymap(map1(),map2())
Je trouve des différences entre toutes ces valeurs d'adresses
Code : Tout sélectionner
NewMap TEST1.POINT()
NewMap TEST2.POINT()
test1("GH")\x=2
test1()\x=5
Debug " **** ADRESSES MAP"
Debug TEST1()
; Debug TEST1()-SizeOf(POINT)
Debug @test1("GH")\x
Debug @test1()\y
CopyMap(TEST1(),TEST2())
Debug " **** ADRESSES MAP"
Debug TEST2()
; Debug TEST2()-SizeOf(POINT)
Debug @test2("GH")\x
Debug @test2()\y
Define ATEST1.l , ATEST2.l
; Autre solution à partir du généré ASM m_TEST1 adresse de la MAP TEST1 et m_TEST2 adresse de la MAP TEST2
!mov EAX ,dword [m_TEST1]
!mov dword [v_ATEST1], EAX
!mov EAX ,dword [m_TEST2]
!mov dword [v_ATEST2], EAX
Debug ATEST1
Debug ATEST2
; Copie du généré ASM
; ; CopyMap(TEST1(),TEST2())
; PUSH dword [m_TEST2]
; PUSH dword [m_TEST1]
; CALL _PB_CopyMap@8
; ; Debug " **** ADRESSES MAP"
; ; Debug TEST2()
; ;
; ; Debug @test2("GH")\x
; ; Debug @test2()\y
; ; Define ATEST1.l , ATEST2.l
; ;
; ;
; ; !mov EAX ,dword [m_TEST1]
; MOV EAX ,dword [m_TEST1]
; ; !mov dword [v_ATEST1], EAX
; MOV dword [v_ATEST1], EAX
; ; !mov EAX ,dword [m_TEST2]
; MOV EAX ,dword [m_TEST2]
; ; !mov dword [v_ATEST2], EAX
; MOV dword [v_ATEST2], EAX
; ;
; ; Debug ATEST1
; ; Debug ATEST2
;
Re: Adresse des Map / List / Array
Publié : jeu. 23/avr./2015 9:37
par falsam
Les bots ont au moins un intérêt : Celui de réveiller des sujets enterrés depuis plus d'un an
Re: Adresse des Map / List / Array
Publié : jeu. 23/avr./2015 10:28
par Demivec
falsam a écrit :Les bots ont au moins un intérêt : Celui de réveiller des sujets enterrés depuis plus d'un an
graph100:
Ma tentative:
Code : Tout sélectionner
Structure map_POINT
Map mon_map.POINT()
EndStructure
Global NewList map_POINTs.map_POINT()
Procedure create_new_Map_POINT_addresses(x.i = 1)
Protected i, compter
For i = 1 To x
If AddElement(map_POINTs())
compter + 1
EndIf
Next
ProcedureReturn compter
EndProcedure
Procedure delete_Map_POINT(*x.map_POINT)
If ListSize(map_POINTs()) > 0
ChangeCurrentElement(map_POINTs(), *x)
DeleteElement(map_POINTs())
EndIf
EndProcedure
Define i, k$, x
If create_new_Map_POINT_addresses(6)
;créer des données aléatoires
x = ListSize(map_POINTs()) ; x > 0
For i = 1 To 5 * x
SelectElement(map_POINTs(), Random(x - 1))
k$ = Chr(Random(25) + 'A') + Chr(Random(25) + 'A')
map_POINTs()\mon_map(k$)\x = Random(49, 0)
map_POINTs()\mon_map()\y = Random(100, 50)
Next
ForEach map_POINTs()
Debug "Map Addresse: " + @map_POINTs()
ForEach map_POINTs()\mon_map()
Debug " '" + MapKey(map_POINTs()\mon_map()) + "': " + map_POINTs()\mon_map()\x + ", " + map_POINTs()\mon_map()\y
Next
Next
Debug "-------------------------"
Define *adr.map_POINT
SelectElement(map_POINTs(), Random(ListSize(map_POINTs()) - 1))
*adr.map_POINT = @map_POINTs()
;supprimer un élément
If MapSize(*adr\mon_map()) > 0
ResetMap(*adr\mon_map())
NextMapElement(*adr\mon_map())
DeleteMapElement(*adr\mon_map())
EndIf
;créer nouvel élément
*adr\mon_map("crayon")\x = 1001: *adr\mon_map()\y = 2001
Debug "Map Addresse: " + *adr
ForEach *adr\mon_map()
Debug " '" + MapKey(*adr\mon_map()) + "': " + *adr\mon_map()\x + ", " + *adr\mon_map()\y
Next
EndIf
@:édition: Merci à Ollivier pour la correction de ma grammaire.
Re: Adresse des Map / List / Array
Publié : ven. 24/avr./2015 18:02
par Ollivier
"Ma tentative". (Le suffixe "*ive" indique un féminin comme "*tion")
(For objects, ideas and all that's not a person)
Langue anglaise : 1 genre (its answer)
Langue française : 2 genres (masculin, féminin)
Langue allemande : 3 genres (masculin, féminin et neutre)
(Lots of foreigners say french language is difficult. )
Merci beaucoup Demivec pour ton double effort:
- Le 1er de proposer des réponses techniques
- Le 2nd de traduire
Don't worry: french online press write worse than you.
Merci à Papipp aussi évidemment.
Re: Adresse des Map / List / Array
Publié : sam. 25/avr./2015 1:19
par Demivec
Ollivier a écrit :Don't worry: french online press write worse than you.
Merci Ollivier.
Re: Adresse des Map / List / Array
Publié : mar. 28/avr./2015 21:52
par graph100
Ahah ! Merci Rhiannnna.
Ca vous a fait réfléchir du coup
Sinon, je suis plus trop présent, premier taff oblige
Pis avec le taff je nage dans le javascript et les web tech, donc PB c'est pas optimal (j'essaye de bien comprendre tout ça et ensuite peut-être Spriderbasic)