|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| Trie d'un tableau dynamique de type structure |
| Débuté par devwds, 18 mai 2012 10:28 - 10 réponses |
| |
| | | |
|
| |
| Posté le 18 mai 2012 - 10:28 |
Bonjour, Je remplie un tableau dynamique de structure
IntervalRes est une structure x est un entier y est un entier z est un entier FIN
Resultat est un tableau dynamique de IntervalRes
mais quand j'tilise la fonction TABEAUTRIE j'ai le message d'erreur :
Les tris ne peuvent s'effectuer que sur des éléments de type simple (entier, chaîne, ...).
Je veux faire le tri par les x ? |
| |
| |
| | | |
|
| | |
| |
| Posté le 18 mai 2012 - 12:35 |
Bonjour, L'aide en ligne de Tableautrie te donne 2 méthodes pour trier un tableau de structure...
Frédéric.
"Testeur" a écrit dans le message de groupe de discussion : 30cf707bba82a08484cebf96cc8f3db2@news.pcsoft...
Bonjour, Je remplie un tableau dynamique de structure
IntervalRes est une structure x est un entier y est un entier z est un entier FIN
Resultat est un tableau dynamique de IntervalRes
mais quand j'tilise la fonction TABEAUTRIE j'ai le message d'erreur :
Les tris ne peuvent s'effectuer que sur des éléments de type simple (entier, chaîne, ...).
Je veux faire le tri par les x ? |
| |
| |
| | | |
|
| | |
| |
| Posté le 18 mai 2012 - 13:16 |
Bonjour, Je l'avais testé mais me donne message d'erreur suivant :
"Les tris ne peuvent s'effectuer que sur des éléments de type simple (entier, chaîne, ...)"
donc je suis retourné à la méthode de tri à bulle classique en parcourant le tableau Merci |
| |
| |
| | | |
|
| | |
| |
| Posté le 18 mai 2012 - 13:28 |
Pourtant chez moi ça fonctionne: Element est une structure sCodeStock est une chaîne sCodeUvc est une chaîne sEncours est une chaîne FIN ElementCourant est un Element tabListeEncours est un tableau dynamique d'Element .... TableauTrie(tabListeEncours,ttMembre,"scodestock") ....
Dans un autre projet, j'avais aussi utiliser l'autre syntaxe (avec la procédure) pour trier un tableau de structure:
Client est une structure ClientMagento est un STcustomerCustomerEntityToCreate Adresse est un STcustomerAddressEntityCreate sIdClient est une chaîne bDoublon est un booléen = Faux bExisteDeja est un booléen = Faux sMotDePasseClair est une chaîne bClientOK est un booléen = Faux bAdresseOK est un booléen = Faux bAdressePresente est un booléen = Faux FIN
tabListeClientACreer est un tableau dynamique de Client .... TableauTrie(tabListeClientACreer,ttFonction,Compare)
PROCEDURE Compare(Element1 est un Client,element2 est un Client)
SELON Vrai CAS Majuscule(Element1:Client:m_email) < Majuscule(element2:Client:m_email) RENVOYER -1 CAS Majuscule(Element1:Client:m_email) > Majuscule(element2:Client:m_email) RENVOYER 1 CAS Majuscule(Element1:Client:m_email) = Majuscule(element2:Client:m_email) SELON Vrai CAS Majuscule(Element1.sIdClient) < Majuscule(element2.sIdClient) RENVOYER -1 CAS Majuscule(Element1.sIdClient) > Majuscule(element2.sIdClient) RENVOYER 1 CAS Majuscule(Element1.sIdClient) = Majuscule(element2.sIdClient) RENVOYER 0 FIN FIN
Frédéric. Frédéric.
"Testeur" a écrit dans le message de groupe de discussion : e114260c08e91ef8244f071dc68c082c@news.pcsoft...
Bonjour, Je l'avais testé mais me donne message d'erreur suivant :
"Les tris ne peuvent s'effectuer que sur des éléments de type simple (entier, chaîne, ...)"
donc je suis retourné à la méthode de tri à bulle classique en parcourant le tableau Merci |
| |
| |
| | | |
|
| | |
| |
| Posté le 18 mai 2012 - 18:26 |
Bonjur,
Moi je travaille avec Windev15 et vous ?
Merci de m'avoir répondu  |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 188 messages |
|
| Posté le 18 mai 2012 - 19:16 |
Bonjour
Je travaille plus en WD16, mais il me semble avoir déjà fait ce type de trie en WD14, avant de migrer en WD16.
Donne nous ta syntaxe exacte de ton TableauTrie(), il y a peut-être une petite erreur de syntaxe.
Car moi aussi, cela fonctionne très bien avec la même syntaxe que les intervenants précédant, sur des tableaux de stucture ou tableaux d'objet et même trie multiple sur plusieurs membres de l'objet.
TableauTrie(gf_tabDynObjReclamationBT_Moteur,ttMembre,"m_sNoreclamation;m_sNumBT;m_sNoVehicule")
STR_MesurePneu est une structure sNoBrand est une chaîne = "" sCodePosition est une chaîne = "" iCodeEtatMesure est un entier = 0 rMesurePneu est un réel = 0 bMesureEstimer est un booléen = Faux
sNumBT est une chaîne = "" dhDateHeureMesure est une DateHeure = "" iKmsBTAVie est un entier = 0 iKmsBTHubo est un entier = 0
sCategVeh est une chaîne = "" sSousCategVeh est une chaîne = "" sCodeModeleSemelle est une chaîne = ""
sCentreLocalisationVeh est une chaîne = "" sCentreAppartenanceVeh est une chaîne = "" FIN
l_objTabDyn_MesureParPosition est un tableau dynamique de 0 STR_MesurePneu
PrlInsererLigne(l_objTabDyn_MesureParPosition, l_sVehicule_Svg, l_sCodeEssieu_Svg, l_rEcartMax)
Procedure PrlInsererLigne(ppe_objTabDyn_MesureParPosition, ppe_sVehicule_Svg, ppe_sCodeEssieu_Svg, ppe_rEcartMax) ... TableauTrie(ppe_objTabDyn_MesureParPosition, ttMembre, "rMesurePneu") ... TableauTrie(ppe_objTabDyn_MesureParPosition, ttMembre, "sCodePosition") ...
Corinne Bonhomme Montréal, Canada
Testeur wrote in news message <b846c8e5b4d442cc0526434add659fa8@news.pcsoft>:
Bonjur, Moi je travaille avec Windev15 et vous ? Merci de m'avoir répondu 
-- Corinne Bonhomme Montréal, Canada |
| |
| |
| | | |
|
| | |
| |
| Posté le 18 mai 2012 - 19:30 |
En 16, mais mon code date de la 15, et l'aide en ligne en 15 donne les mêmes syntaxes. On peut voir le code qui ne fonctionne pas ?
Frédéric.
"Testeur" a écrit dans le message de groupe de discussion : b846c8e5b4d442cc0526434add659fa8@news.pcsoft...
Bonjur,
Moi je travaille avec Windev15 et vous ?
Merci de m'avoir répondu  |
| |
| |
| | | |
|
| | |
| |
| Posté le 19 mai 2012 - 11:34 |
Bonjour, j'avais essayé ces deux fonctions qui me donne le même erreur :
[ code ]
TableauTrie(MonTableau, ttCroissant) Trie(MonTableau, ttCroissant)
[ /code] |
| |
| |
| | | |
|
| | |
| |
| Posté le 19 mai 2012 - 11:34 |
les deux fonctions avec ces parametres donne message erreur :
TableauTrie(Resultat,ttDécroissant) Trie(MonTableau, ttCroissant)
par contre celui là marche bien
TableauTrie(Resultat,ttMembre,"x") Donc je veux remplacer tout ce code
TableauTrier = True
pour c = 1 _a_ NbrLigne - 1
SI resultat[c]:x > resultat[c +1]:x ALORS
xx = resultat[c]:x yy = resultat[c]:y zz = resultat[c]:z
Resultat[c]:x = Resultat[c + 1]:x Resultat[c]:y = Resultat[c + 1]:y Resultat[c]:z = Resultat[c + 1]:z
Resultat[c + 1]:x = xx Resultat[c + 1]:y = yy Resultat[c + 1]:z = zz
TableauTrier = False
FIN FIN par une seule instruction Merci beaucoup |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 188 messages |
|
| Posté le 01 juin 2012 - 19:44 |
Bonjour
Tu ne peux pas utiliser "TableauTrie(Resultat,ttDécroissant)" sur un tableau de structure... enfin, je ne pense pas. Cette syntaxe est pour un TABLEAU SIMPLE et non, un tableau de structure.
Si tu veux faire un tri décroissant sur ton membre "x", il te suffit de faire TableauTrie(Resultat,ttMembre,"-x") et cela va surement marcher.
Je ne comprend pas ton problème, tu dis toi même que "TableauTrie(Resultat,ttMembre,"x")" fonctionne !!!
Testeur wrote in news message <bc7658e2fd19fa1b0dcedea52d8002a7@news.pcsoft>:
les deux fonctions avec ces parametres donne message erreur : TableauTrie(Resultat,ttDécroissant) Trie(MonTableau, ttCroissant) par contre celui là marche bien TableauTrie(Resultat,ttMembre,"x") Donc je veux remplacer tout ce code TableauTrier = True
pour c = 1 _a_ NbrLigne - 1
SI resultat[c]:x > resultat[c +1]:x ALORS
xx = resultat[c]:x yy = resultat[c]:y zz = resultat[c]:z
Resultat[c]:x = Resultat[c + 1]:x Resultat[c]:y = Resultat[c + 1]:y Resultat[c]:z = Resultat[c + 1]:z
Resultat[c + 1]:x = xx Resultat[c + 1]:y = yy Resultat[c + 1]:z = zz
TableauTrier = False
FIN FIN par une seule instruction Merci beaucoup
-- Corinne Bonhomme Montréal, Canada |
| |
| |
| | | |
|
| | |
| |
| Posté le 02 juin 2012 - 01:27 |
Bonjour
les deux fonctions avec ces parametres donne message erreur :
TableauTrie(Resultat,ttDécroissant) Trie(MonTableau, ttCroissant)
Au début j'avais pas utilisé la syntaxe "ttMembre"
voici l'aide de la fonction TableauTrie :
Trie un tableau WLangage. Les différents tris suivants peuvent être réalisés : Tri d'un tableau d'éléments simples à une dimension. Tri d'un tableau d'éléments simples à deux dimensions selon une ou plusieurs colonnes. Tri d'un tableau de classe ou de structures à une dimension selon 1 ou plusieurs membres. Tri d'un tableau à une dimension en fournissant une procédure de comparaison. Remarques : Cette fonction n'est pas disponible sur les tableaux fixes. Cette fonction est équivalente à la fonction Trie. Cette fonction est utilisable sur les tableaux des variables de type avancé.
normalement ttDécroissant doit aussi fonctionne !
Merci autre fois et a+ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|