Function ConvFormat(ByVal imageformat As String) As String
Private Function ConvFormat( imageformat As String) As String ... ConvFormat=imageformat End function Puis tu l'appelle avec '3ème MessageBox (valeur retournée de la fonction "ConvFormat") MessageBox.Show(ConvFormat(imageformat))
Function ConvFormat(imageformat As String) As String '1ère MessageBox (valeur trouvée dans le fichier) MessageBox.Show(imageformat) If imageformat = "4x5" Then imageformat = FindAndReplace(imageformat, "4x5", "10x13") '2ème MessageBox (valeur remplacée) MessageBox.Show(imageformat) End If If imageformat = "4x6" Then imageformat = FindAndReplace(imageformat, "4x6", "10x15") '2ème MessageBox (valeur remplacée) MessageBox.Show(imageformat) End If ConvFormat = imageformat End Function
imageformat = FindAndReplace(imageformat, """", "") 'récupération de la valeur imageformat = ConvFormat(imageformat) '3ème MessageBox (valeur retournée de la fonction "ConvFormat") MessageBox.Show(imageformat)
Même si la fonction est sensée traiter et passer une variable de même nom, cette methode est à proscrire.n'importe quoi, une sub ou une fonction peut très bien traiter un passage de résultat via ses paramètres, d'ailleurs en C les résultats ne passe que de cette façon.
"ByVal" est utilisé pour les tableauxet aussi pour n'importe quelle type de données. Mais c'est bien là où était une erreur.
Soit tu déclares imageformat en PUBLIC dans ta form principalecela va à l'encontre de la protection de la donnée. Cette solution ne doit être utilisée qu'en dernier recours et en connaissance de cause.
Function Mot() as String '.. plein de code Mot = "bonjour" ' c'est donc là que tu indiques quel résultat est transmis End Function
Sub Test(ByVal A as string) End Sub '... Dim B as String B = "Bonjour" Test B
Sub Test(ByRef A as string) End Sub '... Dim B as String B = "Bonjour" Test B
Sub Inverser(A as String, B as String) Dim C as String C = A A = B B = C End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionFunction ConvFormat(imageformat As String) As String Select case imageformat Case "4x5" : Return FindAndReplace(imageformat, "4x5", "10x13") Case "4x6" : Return FindAndReplace(imageformat, "4x6", "10x15") End Select End Function
Msgbox imageformat
MessageBox.Show(imageformat)
Function Exemple(OuiOuNon as Boolean) as String If OuiOuNon = False Then Return "Je ne fais rien" 'et ça n'exécutera rien au delà 'plein de code à exécuter sans erreur Return "J'ai tout fait" 'et ça n'exécutera rien au delà 'traitement des erreurs (Avec Try / Catch en .Net, surtout pas On Error. ! ) Return "J'ai eu un problème" 'et ça c'est la fin de toute façon End Function
Actuellement, lorsqu'il trouve par exemple la valeur "4x5" dans le fichier, il m'affiche la 1ère MessageBox "4x5", puis il m'indique la valeur remplacée dans une 2ème MessageBox "10x13
If imageformat = "4x5" Thence qui veut dire que "4x5" c'est le texte entier.
If imageformat = "4x5" Then imageformat = "10x13" '2ème MessageBox (valeur remplacée) MessageBox.Show(imageformat) End If
Select case imageformat Case "4x5" : Return "10x13" Case "4x6" : Return "10x15" 'pour des raisons de lisibilité, je préfère cette présentation plutôt que sur une ligne, d'autant que si tu veux écrire plusieurs instruction pour un case, il faudra y passer End Select
Dim texte as String = "Bonjour le monde!" MessageBox.Show(texte.Replace(" monde", "s gens"))
imageFormat = imageFormat.Replace("4x", "10x").Replace("x5", "x13").Replace("x6", "x15")
Private dictionnaire As Dictionary(Of String, String) = New Dictionary(Of String, String) From { {"4x5", "10x13"}, {"4x6", "10x15"}, {"4x7", "11x17"} } Private Sub TestThiers89() Dim imageFormat As String = "3x5" If dictionnaire.ContainsKey(imageFormat) Then imageFormat = dictionnaire(imageFormat) Dim imageFormat2 As String = "4x5" If dictionnaire.ContainsKey(imageFormat2) Then imageFormat2 = dictionnaire(imageFormat2) End Sub