Comment classer les données par ordre croissant en fonction du 2eme mot.

Résolu
WorldDMT
Messages postés
871
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2012
- 17 nov. 2008 à 10:35
WorldDMT
Messages postés
871
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2012
- 19 nov. 2008 à 15:16
Salut



pour l'exemple qui suit



un fichier INI test.ini



[P1]
test=blabla 100
test2=bloblo 150
[P2]
test3=blibli 60
test4=bleble 90





je voulais savoir si il y a une possibilité de classer les données par ordre croissant en fonction du 2eme mot
que ça retourne comme ça :






bloblo
blabla
bleble
blibli




ou comme ça




bloblo

blabla


bleble

blibli


donc en gros je veu que ça classe du plus grand au plus petit lors d'une loop ou regex




j'espère que j'ai été clair.
merci d'avance

13 réponses

uaip
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011

17 nov. 2008 à 13:47
Ah oui, je n'avais pas vu ton pseudo ^^
Je pense que tu veux faire ça en mIRC donc.
Bon... je me souviens plus trop, mais je viens de regarder, là. A mon avis pour commencer il serait préférable de lire ton fichier avec $read() et non $readini() (sauf si tes sections sont nommées "1 2 3 etc"). Comme ça tu fais une boucle sur chaque ligne, et tu peux par exemple matcher sur "=". A partir de là tu fais un $gettok(<ligne>,2,$asc(=)) puis tu tokenizes sur l'espace et tu rajoutes donc "$2 $1" à ta variable globale. Enfin tu effectues un $sorttok(<var>,C,n) et voilà...
J'ai bon ? :p
Bon je dis peut-être de la merde, mais c'est comme ça que je ferais (voire même avec $fread() ..)
Donc en gros, si ton fichier n'est pas trop gros, ça donnerait un truc du genre : (de mémoire, donc pas testé)
var %result, %lines $lines(fichier.ini), %line 1 ;je ne sais plus si on part de 0 ou 1
while (%line <= %lines) {
if (= isin $read(fichier.ini,%line)) {
var %item $gettok(%line,2,$asc(=))
tokenize 32 %item
%result = %result $+ $2 $1 $+ ,
}
}
bon, et à partir de là tu retourne la moitié du truc.
Bon, j'ai fait du caca en fait, mais j'ai pas le temps de corriger je vais en cours, donc j'envoie quand même le commentaire au cas où :p
Bonne chance

Cordialement, uaip.
3