FONCTION TOUT EN MAJUSCULE

VicoLaChips2 Messages postés 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 - 26 nov. 2002 à 16:52
cs_liquide Messages postés 1016 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

cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
4 août 2004 à 17:50
ah ok
merci de l'info
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2004 à 17:48
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 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
4 août 2004 à 17:39
ca veut dire quoi , c'est perdu d'avance ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2004 à 17:37
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 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 août 2004 à 17:21
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 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
4 août 2004 à 17:00
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 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 août 2004 à 16:54
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 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
4 août 2004 à 15:54
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 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 août 2004 à 14:19
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
4 août 2004 à 10:33
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
18 nov. 2003 à 22:15
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
27 nov. 2002 à 15:22
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
27 nov. 2002 à 08:36
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
27 nov. 2002 à 08:34
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
26 nov. 2002 à 23:54
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
26 nov. 2002 à 21:47
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 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 2
26 nov. 2002 à 16:52
Bonjour,
Autrement ya ça :

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

@+, VIC
Rejoignez-nous