|
| foncions trie et tab structures |
| Iniciado por blacksun, 13,jun. 2019 11:40 - 9 respuestas |
| |
| | | |
|
| |
Miembro registrado 26 mensajes |
|
| Publicado el 13,junio 2019 - 11:40 |
Bonjour, je voudrais trier un tableau de structures avant de l’afficher dans une liste . mais j'ai droit un crash lors du tri indiquant
Les tris ne peuvent s'effectuer que sur des éléments de type simple (entier, chaîne, ...)
une idées?
Structure et classe:
STAPI est une structure sType est une chaîne sADR_3 est une chaîne sName est une chaîne sCP est un entier sCodeInsee est une chaîne fixe sur 5 sCity est une chaîne sLabel est une chaîne sLat est une chaîne sLon est une chaîne FIN
API_BAN est une Classe
LOCAL AdresseTemp est un STAPI m_tabSTAPI_retournée_structure_TAB est un tableau de STAPI Struc_STAPI est une STAPI AdresseJSON est un JSON indiceTabAdresse est un entier sans signe sParaURL est une chaîne FIN
je emplis mon tableau
TableauSupprimeTout(m_tabSTAPI_retournée_structure_TAB) i est un entier i=1 TANTQUE PAS (AdresseJSON.features[i].properties.score < Pertinence OU AdresseJSON.features[i]=0) AdresseTemp.sCity = AdresseJSON.features[i].properties.city AdresseTemp.sCP = AdresseJSON.features[i].properties.postcode AdresseTemp.sCodeInsee = AdresseJSON.features[i].properties.citycode AdresseTemp.sADR_3 = AdresseJSON.features[i].properties.housenumber AdresseTemp.sLabel = AdresseJSON.features[i].properties.label AdresseTemp.sName = AdresseJSON.features[i].properties.name AdresseTemp.sType = AdresseJSON.features[i].properties.type AdresseTemp.sLat = AdresseJSON.features[1].geometry.coordinates[1] AdresseTemp.sLon = AdresseJSON.features[1].geometry.coordinates[2] TableauAjoute(m_tabSTAPI_retournée_structure_TAB,AdresseTemp)
i++ FIN remplissage liste
SI gMonAdresse.ConnexionAPIChargerTabAdresseLecturePremiereAdresse(SAI_ADR_1) ALORS Trie(gMonAdresse.Struc_STAPI.sCP,ttCroissant) SI gMonAdresse.AdresseLitPremier() ALORS ListeSupprimeTout(LISTE_SaisieAssisté) BOUCLE ListeAjoute(LISTE_SaisieAssisté,gMonAdresse.Struc_STAPI.sLabel+gLien(i)) i++ Trace(gMonAdresse.Struc_STAPI.sCP) À FAIRE TANTQUE gMonAdresse.LitSuivantAdresse() LISTE_SaisieAssisté..Visible=Vrai FIN FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.778 mensajes |
|
| Publicado el 13,junio 2019 - 12:21 |
| Et pourquoi ne pas trié la liste après l'avoir rempli ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 13,junio 2019 - 12:22 |
Bonjour, Pour trier un tableau de structure, il faut utiliser la syntaxe suivante :
TableauTrie(<Tableau WLangage> , <ttMembre> , <Membres>) cf https://doc.pcsoft.fr/?3075007&name=tableautrie_fonction
Eventuellement, à l'issue de l'allocation du tableau, on peut commencer par
TableauTrie(<Tableau WLangage> , <ttMembre> , <Membres>) Puis remplacer les TableauAjoute par TableauAjouteTrié -- Il y a peut être plus simple, mais, ça tourneMensaje modificado, 13,junio 2019 - 12:26 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 26 mensajes |
|
| Publicado el 13,junio 2019 - 13:08 |
popoy j'ai essayé ta méthode mais je peu visiblement pas trier la liste
SI gMonAdresse.ConnexionAPIChargerTabAdresseLecturePremiereAdresse(SAI_ADR_1) ALORS SI gMonAdresse.AdresseLitPremier() ALORS ListeSupprimeTout(LISTE_SaisieAssisté) BOUCLE ListeAjoute(LISTE_SaisieAssisté,gMonAdresse.Struc_STAPI.sLabel+gLien(i)) i++ À FAIRE TANTQUE gMonAdresse.LitSuivantAdresse() Trie(LISTE_SaisieAssisté,ttCroissant,Code_postal) LISTE_SaisieAssisté..Visible=Vrai FIN FIN
"Cette fonction n'est pas disponible pour un élément de type 'entier'."
vorolinquo voila ce que j'obtient en faisant ta méthode
AdresseTemp.sCity = AdresseJSON.features[i].properties.city AdresseTemp.sCP = AdresseJSON.features[i].properties.postcode AdresseTemp.sCodeInsee = AdresseJSON.features[i].properties.citycode AdresseTemp.sADR_3 = AdresseJSON.features[i].properties.housenumber AdresseTemp.sLabel = AdresseJSON.features[i].properties.label AdresseTemp.sName = AdresseJSON.features[i].properties.name AdresseTemp.sType = AdresseJSON.features[i].properties.type AdresseTemp.sLat = AdresseJSON.features[1].geometry.coordinates[1] AdresseTemp.sLon = AdresseJSON.features[1].geometry.coordinates[2]
TableauTrie(m_tabSTAPI_retournée_structure_TAB,ttCroissant,AdresseTemp.sCP) TableauAjouteTrié(m_tabSTAPI_retournée_structure_TAB,AdresseTemp) i++ "Les tris ne peuvent s'effectuer que sur des éléments de type simple (entier, chaîne, ..." |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 13,junio 2019 - 16:40 |
Tu as oublié le ttmembre comme le précise la doc
TableauTrie(m_tabSTAPI_retournée_structure_TAB,ttMembre+ttCroissant,AdresseTemp.sCP)
Par ailleurs, le TableauTrie, se fait à l'allocation du tableau pour être utilisé avec TableauAjouteTrié, (dans ton cas, tu trie 2 fois. Si tu veux l'utiliser dans ta boucle, il faut l'appeler après le TableauAjoute ou alors, à la sortie de la boucle (il n'y aura qu'un seul tri dans ce cas)
-- Il y a peut être plus simple, mais, ça tourneMensaje modificado, 13,junio 2019 - 16:46 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 26 mensajes |
|
| Publicado el 13,junio 2019 - 16:54 |
Je ne comprends pas j'ai fait ce que tu m'as demandé à savoir
TableauAjoute(m_tabSTAPI_retournée_structure_TAB,AdresseTemp) TableauTrie(m_tabSTAPI_retournée_structure_TAB,ttMembre+ttCroissant,AdresseTemp.sCP) i++ j'ai malheureusement droit à cela Mauvais paramètre de tri : utilisez ttCroissant ou ttDécroissant pour trier un tableau selon une de ses colonnes. Mensaje modificado, 13,junio 2019 - 16:57 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 13,junio 2019 - 18:27 |
m_tabSTAPI_retournée_structure_TAB est un tableau de STAPI m_tabSTAPI_retournée_structure_TAB=allouer tableau de 0 STAPI
TableauTrie(m_tabSTAPI_retournée_structure_TAB,ttMembre,"+sCP")
TANTQUE PAS ... TableauAjouteTrié(m_tabSTAPI_retournée_structure_TAB,AdresseTemp)
i++ FIN
Par ailleurs, pourquoi ne pas remplir directement ta liste via ton tableau de structure (remplissage par variable)? Un ListeAffiche à la fin de ta boucle d'affectation évite de relire ton tableau séquentiellement -- Il y a peut être plus simple, mais, ça tourneMensaje modificado, 13,junio 2019 - 18:48 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.778 mensajes |
|
| Publicado el 14,junio 2019 - 08:20 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 14,junio 2019 - 10:13 |
Le problème est que sa liste n'est pas triée sur les éléments affichés : Tri sur sCP et affichage de Label dans la liste
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 26 mensajes |
|
| Publicado el 14,junio 2019 - 10:26 |
TableauTrie(m_tabSTAPI_retournée_structure_TAB,ttMembre,"+sCP")
Ce code marche a une exception la dernière ligne de ma liste ne correspond pas au tri... |
| |
| |
| | | |
|
| | | | |
| | |
|