FONCTION TOUT EN MAJUSCULE

Signaler
Messages postés
439
Date d'inscription
dimanche 20 janvier 2002
Statut
Membre
Dernière intervention
2 février 2010
-
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/5114-fonction-tout-en-majuscule

Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

ah ok
merci de l'info
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
split est gros consommateur, init d'1 varArray, SysAllocString pour chaque String a inserer dans le le varArray, une calamite.
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

ca veut dire quoi , c'est perdu d'avance ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
y a ma dll (V 9) dans les sources, vous pourrez mesurer au tick processeur près.
liquide> c'est perdu d'avance.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
tu dois pouvoir faire des GetTickCount (ou plus precis, QueryPerformanceCounter)

a faire sur version compilée, avec un sacré paquet d'appels
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

bin j'me doutais bien qu'il y aurait un pb qqe part :-)

Existe t il un truc pour calculer en temps reel, une méthode par rapport a une autre ?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
Ca fonctionne, bien sur, mais la rapidité est moindre....

tu effectue davantage de manipulations sur tes chaines, et il ne faut pas plusieurs espaces consécutifs

(
qui pourraient être remplacées par :
Mid$(Splitage(i), 1, 1) = UCase$(Mid$(Splitage(i), 1, 1))
)

bref, pas top ;-)
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

Bon bin au risque de me faire incendier, j'aime bien le Split, mais je ne sais pas si ca vaut le coup par rapport à d'autres types de prog. j'ai eventuellement une autre méthode :

Private Function MAJ(Str As String) As String
If Len(Str) 0 Then MAJ Str: Exit Function

Dim Splitage() As String
Dim i As Integer

Splitage() = Split(Str, " ")
For i = LBound(Splitage()) To UBound(Splitage())
Splitage(i) = UCase$(Mid$(Splitage(i), 1, 1)) & Mid$(Splitage(i), 2, Len(Splitage(i)) - 1)
Next i
MAJ = Join(Splitage(), " ")

End Function
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
Ta fonction me plait pas trop....

1 - Find est un String (instr renvoies un entier !)
2 - Str est passé par référence (normal) mais tu le modifies !!
3 - tu fais des Left et des Mid a tout va.... pour remplacer un caractère dans une chaine, c'est inutilement gourmand...

alors pour quelqu'un qui se vante de conserver la casse des lettres, ton influence sur la chaine d'entrée est carrément moins négligeable !

voici une version optimisée :


Function MAJ(Str As String) As String
Dim L As Integer: L = Len(Trim$(Str))

'# MAJ contient la valeur d'entrée, sa taille est dès lors figée :
'# on n'allouera pas de caractères supplémentaires....
MAJ = Str

If L = 0 Then Exit Function

Dim i As Integer

Do
i = i + 1
Mid$(MAJ, i, 1) = UCase$(Mid$(MAJ, i, 1))
i = InStr(i , MAJ, " ")
Loop Until i = 0 Or i >= L
End Function


Niveau Expert, lol
Messages postés
1
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
4 août 2004

moi je te remercie tequila car ta "function" marche aussi en asp (sous reserve de quelques modifs). et tu m'a fais gagner du temps...
Messages postés
2
Date d'inscription
dimanche 23 février 2003
Statut
Membre
Dernière intervention
27 novembre 2003

Dans les dents de papi Weado lol
Messages postés
5
Date d'inscription
vendredi 17 mai 2002
Statut
Membre
Dernière intervention
22 septembre 2008

Si vous reflechissiez une seconde avant de critiquer!!
Si j'ai mis cette fonction c'est que celle de VB n'est pas parfaite et ne convient pas pour tout!
un exemple
je prend la chaine de caractere "heLLO woRLD"
ma fonction renvoit -> "HeLLO WoRLD" La casse des autres caracteres est conservée
maintenant la fonction de VB renvoit "Hello World" La casse n'est pas conservé et peut etre génant pour la suite du traitement!
de plus ma fonction fonctionne toute version de VB ce qui n'est pas le cas de StrConv
Voilà je viens de vs démontrer qu'on peut bien réinventer la roue si on l'améliore!
Messages postés
412
Date d'inscription
mercredi 19 décembre 2001
Statut
Membre
Dernière intervention
7 avril 2008
1
il suffit d'une petite recherche dans l'aide de VB pour savoir si la fonction existe, plutôt que d'essayer de la redevelopper
Messages postés
412
Date d'inscription
mercredi 19 décembre 2001
Statut
Membre
Dernière intervention
7 avril 2008
1
pourkoi faire simple alors quon peut faire vachement compliqué ??
Messages postés
3
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
24 novembre 2002

Weado a raison sur un point: lâche pas et continu
merci à toi et VicoLaChips2, sans qui, je serai encore en train de chercher/creer la fonction
Messages postés
119
Date d'inscription
mercredi 19 juin 2002
Statut
Membre
Dernière intervention
21 avril 2009

je tiens ABSOLUMENT à te féliciter d'avoir fait un prog qui sert a rien et qui est totalement pourrie, lâche pas et continu à faire de merdes comme ceel la
Messages postés
439
Date d'inscription
dimanche 20 janvier 2002
Statut
Membre
Dernière intervention
2 février 2010
1
Bonjour,
Autrement ya ça :

Function MAJ(str as string) as string
MAJ = StrConv(str, vbProperCase)
End Function

@+, VIC