FONCTION TOUT EN MAJUSCULE

Messages postés
439
Date d'inscription
dimanche 20 janvier 2002
Statut
Membre
Dernière intervention
2 février 2010
- - Dernière réponse : cs_liquide
Messages postés
1018
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
- 4 août 2004 à 17:50
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

Afficher la suite 
cs_liquide
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
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
split est gros consommateur, init d'1 varArray, SysAllocString pour chaque String a inserer dans le le varArray, une calamite.
cs_liquide
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 ?
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
y a ma dll (V 9) dans les sources, vous pourrez mesurer au tick processeur près.
liquide> c'est perdu d'avance.
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
tu dois pouvoir faire des GetTickCount (ou plus precis, QueryPerformanceCounter)

a faire sur version compilée, avec un sacré paquet d'appels
cs_liquide
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 ?
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
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 ;-)
cs_liquide
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
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
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
cs_pacito85
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...
strikenet
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
TequilaTex
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!
Sirocooo
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
Sirocooo
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é ??
kv33
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
Weado
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
VicoLaChips2
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