VicoLaChips2
Messages postés436Date d'inscriptiondimanche 20 janvier 2002StatutMembreDernière intervention 2 février 2010
-
26 nov. 2002 à 16:52
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 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.
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 4 août 2004 à 17:50
ah ok
merci de l'info
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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és1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 4 août 2004 à 17:39
ca veut dire quoi , c'est perdu d'avance ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és1Date d'inscriptionvendredi 11 juillet 2003StatutMembreDerniè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és2Date d'inscriptiondimanche 23 février 2003StatutMembreDernière intervention27 novembre 2003 18 nov. 2003 à 22:15
Dans les dents de papi Weado lol
TequilaTex
Messages postés5Date d'inscriptionvendredi 17 mai 2002StatutMembreDernière intervention22 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és412Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention 7 avril 20081 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és412Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention 7 avril 20081 27 nov. 2002 à 08:34
pourkoi faire simple alors quon peut faire vachement compliqué ??
kv33
Messages postés3Date d'inscriptiondimanche 24 novembre 2002StatutMembreDernière intervention24 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és119Date d'inscriptionmercredi 19 juin 2002StatutMembreDernière intervention21 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és436Date d'inscriptiondimanche 20 janvier 2002StatutMembreDernière intervention 2 février 20102 26 nov. 2002 à 16:52
Bonjour,
Autrement ya ça :
Function MAJ(str as string) as string
MAJ = StrConv(str, vbProperCase)
End Function
4 août 2004 à 17:50
merci de l'info
4 août 2004 à 17:48
4 août 2004 à 17:39
4 août 2004 à 17:37
liquide> c'est perdu d'avance.
4 août 2004 à 17:21
a faire sur version compilée, avec un sacré paquet d'appels
4 août 2004 à 17:00
Existe t il un truc pour calculer en temps reel, une méthode par rapport a une autre ?
4 août 2004 à 16:54
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 ;-)
4 août 2004 à 15:54
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
4 août 2004 à 14:19
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
4 août 2004 à 10:33
18 nov. 2003 à 22:15
27 nov. 2002 à 15:22
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!
27 nov. 2002 à 08:36
27 nov. 2002 à 08:34
26 nov. 2002 à 23:54
merci à toi et VicoLaChips2, sans qui, je serai encore en train de chercher/creer la fonction
26 nov. 2002 à 21:47
26 nov. 2002 à 16:52
Autrement ya ça :
Function MAJ(str as string) as string
MAJ = StrConv(str, vbProperCase)
End Function
@+, VIC