(Ce serait bien de donner un exemple complet et testé et pas des bouts de codes avec erreur de syntaxe... NewList -> NewList nom.<type>() et ça se déclare après la définition de structure)
Donc un exemple complet
Code : Tout sélectionner
Structure Jstock
mag.s
fam.s
prod.s
stock.s
pu.s
mnt.s
cletri.s
EndStructure
NewList JstockListe.Jstock()
Debug #CRLF$ + "--- Préparation structure"
Restore DataTest
For i = 1 To 3
Read.s Mag$
Read.s Fam$
AddElement(JstockListe())
With JstockListe()
\mag = Mag$
\fam = Fam$
\prod = Des$
\Stock = wqf$
\pu = wpmp$
\Mnt = wvaleur$
; \cletri = mag$ + Space(1) + fam$
\cletri = mag$ + " " + fam$
EndWith
Debug Mag$ + "," + Fam$ + " -> «" + JstockListe()\cletri + "»"
Next
Debug #CRLF$ + "--- AVANT Tri"
ForEach JstockListe()
Debug "Mag: " + JstockListe()\mag + " - CleTri -> «" + JstockListe()\cletri + "»"
Next
SortStructuredList(jstockListe(), #PB_Sort_Ascending, OffsetOf(jstock\cletri),TypeOf(jstock\cletri))
Debug #CRLF$ + "--- APRES Tri"
ForEach JstockListe()
Debug "Mag: " + JstockListe()\mag + " - CleTri -> «" + JstockListe()\cletri + "»"
Next
End
DataSection
DataTest:
Data.s "b bb", "b cc", "b bb", "a cc", "c cc", "c dd"
EndDataSection
Résultat
Code : Tout sélectionner
--- Préparation structure
b bb,b cc -> «b bb b cc»
b bb,a cc -> «b bb a cc»
c cc,c dd -> «c cc c dd»
--- AVANT Tri
Mag: b bb - CleTri -> «b bb b cc»
Mag: b bb - CleTri -> «b bb a cc»
Mag: c cc - CleTri -> «c cc c dd»
--- APRES Tri
Mag: b bb - CleTri -> «b bb a cc»
Mag: b bb - CleTri -> «b bb b cc»
Mag: c cc - CleTri -> «c cc c dd»
Ceci fonctionne, le tri s'est bien fait sur CleTri
Mais après ça dépend de tes données
- Dixit la doc,
SortStructuredList ne trie pas les champs de longueur fixe (mais tu n'en as pas ici)
- Dixit la doc, le tri est sensible aux majuscules/minuscules
- Utiliser une fonction plutôt que son résultat connu d'avance provoque des calculs supplémentaires à chaque itération. Donc " " ou Chr(32) est mieux dans ce cas que Space(1)