Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Comparaison de deux chaînes de caractères Dim 1 Aoû 2010 - 0:50 | |
| J'ai fait une nouvelle petite DLL (contenue dans la distribution de KGF.dll) qui s'appelle Strings.dll. Elle est dédiée à de nouvelles fonctions de traitements de chaînes de caractères. Pour l'heure, elle contient une seule fonction: res% = dll_call2("CompareStr",adr(string1$),adr(string2$)) if res<0 then ... string1$ < string2$ if res=0 then ... string1$ à string2$ if res>0 then ... string1$ > string2$ Il y a comme d'habitude un programme "test Strings.bas" qui permet de visualiser le résultat.
Avec la nouvelle DLL DynamicallyLoadDLL, on peut combiner plusieurs DLL dont Strings.dll par exemple, afin de les avoir simultanément ! Consulter la donc contenue dans Autres_DLL.rtf et le programme démo "test DynamicallyLoadDLL.bas".
| |
|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Comparaison de deux chaînes de caractères Lun 23 Aoû 2010 - 13:44 | |
| La version en Panoramic : C'est juste un petit exercice, histoire de me déshabituer de la fonction print.... - Code:
-
hide 0 label EndProg on_close 0,EndProg
dim Verbose%: Verbose%=1 : ' ***** bla-bla actif if Verbose%<>0 dim VerboseForm%:VerboseForm%=9876 form VerboseForm%:width VerboseForm%,screen_x:height VerboseForm%,200:caption VerboseForm%,"Verbose":top VerboseForm%,screen_y - height(VerboseForm%) -34 list VerboseForm%+1:parent VerboseForm%+1,VerboseForm%: width VerboseForm%+1,width(VerboseForm%)-8:height VerboseForm%+1,height(VerboseForm%)-34 dim Verbose$(2) on_close VerboseForm%, EndProg end_if
' ****************************************************************************** ' * Comparaison de 2 chaines de caractère en panoramic. ' ******************************************************************************
' ***** Init variables nécessaires pour strcmp
label strcmp dim strcmp_s1$,strcmp_s2$,strcmp
' ***** Exemples de comparaison de chaine :
width 0,350:height 0,200:left 0,(screen_x-width(0))/2:top 0,(screen_y-height(0))/2 caption 0,"EXEMPLE D'UTILISATION DE STRCMP" alpha 2 : caption 2,"Voir les résultats de comparaison dans la fenêtre 'verbose'" left 2,(width(0)-width(2))/2:top 2,(height(0)/2)-height(2)-21 show 0
strcmp_s1$ = "Aea" : strcmp_s2$ = "Aeb" gosub strcmp
strcmp_s1$ = "Aea" : strcmp_s2$ = "Aead" gosub strcmp
strcmp_s1$ = "Aebc" gosub strcmp
strcmp_s1$ = "Aec" : strcmp_s2$ = "Aeb" gosub strcmp
strcmp_s1$ = strcmp_s2$ gosub strcmp
end
' ****************************************************************************** ' * Fin du programme ' ****************************************************************************** EndProg: terminate
' ******************************************* ' * Procédures ' ******************************************* strcmp: strcmp=1 if Verbose%<>0 Verbose$(0)="Inferieure": Verbose$(1)="egale": Verbose$(2)="superieure" end_if while mid$(strcmp_s1$,strcmp,1)=mid$(strcmp_s2$,strcmp,1) if ((strcmp = len(strcmp_s1$)) or (strcmp = len(strcmp_s2$))) if len(strcmp_s1$)<>len(strcmp_s2$) strcmp = sgn(len(strcmp_s1$) - len(strcmp_s2$)) else strcmp=0 end_if if Verbose%<>0 then item_add VerboseForm%+1,"strcmp( "+chr$(34)+strcmp_s1$+chr$(34)+" , "+chr$(34)+strcmp_s2$+chr$(34)+" ) = "+Verbose$(strcmp+1) return end_if strcmp=strcmp+1 end_while strcmp = sgn(asc(mid$(strcmp_s1$,strcmp,1)) - asc(mid$(strcmp_s2$,strcmp,1))) if Verbose%<>0 then item_add VerboseForm%+1,"strcmp( "+chr$(34)+strcmp_s1$+chr$(34)+" , "+chr$(34)+strcmp_s2$+chr$(34)+" ) = "+Verbose$(strcmp+1) return
EDIT : Damned ! il restait encore des "print" !!! | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comparaison de deux chaînes de caractères Lun 23 Aoû 2010 - 22:50 | |
| Effectivement, ça fait exactement cela. Dommage qu'il faille dans d'ingéniosité pour une fonction presque élémentaire de traitement de chaînes de caractères, mais Panoramic continuera d'évoluer, j'en suis certain. En attentant, ta fonction est une alternative intéressante tout-Panoramic à ma fonction DLL. | |
|
Contenu sponsorisé
| Sujet: Re: Comparaison de deux chaînes de caractères | |
| |
|