PureBasic

Forums PureBasic
Nous sommes le Dim 16/Déc/2018 18:26

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 
Auteur Message
 Sujet du message: Adresse des Map / List / Array
MessagePosté: Ven 14/Mar/2014 1:02 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 1318
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:
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:
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

_________________
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Adresse des Map / List / Array
MessagePosté: Sam 15/Mar/2014 17:01 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3699
Tu peux faire comme ceci aussi:

Code:
*pointer.Point = FindMapElement(variable\mon_test(), "YO")
Debug *pointer\y


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Adresse des Map / List / Array
MessagePosté: Lun 17/Mar/2014 21:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 1318
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.

_________________
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Adresse des Map / List / Array
MessagePosté: Jeu 23/Avr/2015 8:03 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 537
Bonjour Graph_100

et comme cela

Code:
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+

_________________
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Adresse des Map / List / Array
MessagePosté: Jeu 23/Avr/2015 9:28 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 537
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:
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
;

_________________
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Adresse des Map / List / Array
MessagePosté: Jeu 23/Avr/2015 9:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6736
Localisation: IDF (Yvelines)
Les bots ont au moins un intérêt : Celui de réveiller des sujets enterrés depuis plus d'un an :)

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.45 LTS & PB 5.62
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Restez informé Image Pure Basic Francophone Community

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Adresse des Map / List / Array
MessagePosté: Jeu 23/Avr/2015 10:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 18/Sep/2010 18:13
Messages: 63
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:
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.


Dernière édition par Demivec le Sam 25/Avr/2015 1:13, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Adresse des Map / List / Array
MessagePosté: Ven 24/Avr/2015 18:02 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3223
"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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Adresse des Map / List / Array
MessagePosté: Sam 25/Avr/2015 1:19 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 18/Sep/2010 18:13
Messages: 63
Ollivier a écrit:
Don't worry: french online press write worse than you.


Merci Ollivier. :oops: :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Adresse des Map / List / Array
MessagePosté: Mar 28/Avr/2015 21:52 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 1318
Ahah ! Merci Rhiannnna.

Ca vous a fait réfléchir du coup :lol:
Sinon, je suis plus trop présent, premier taff oblige :roll:
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)

_________________
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye