cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 2013
-
4 févr. 2009 à 19:10
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 2013
-
5 févr. 2009 à 12:39
Salut !
J'ai un problème qui est le suivant :
Admettons que j'ai une valeur qui est égale à C:/test1/test2/test3/fichier1, on dit que c'est le chemin actuel...
Maintenant on a sélectionner le chemin C:/test1/test2/essais/fichier2 dans un openfiledialog....
J'aimerais obtenir le chemin entre C:/test1/test2/test3/fichier1 et C:/test1/test2/essais/fichier2
Il y a quelque temps, j'ai fait un algorithme pour faire ça, mais ça marche uniquement avec ce genre d'exemple :
chemin actuel : C:/test1/test2/test3/fichier1
nouveau chemin : C:/test1/test2/test3/test4/fichier2
mon algorithme retourne la valeur test4/fichier2.....
Mais bon, je ne trouve pas comment faire pour qu'il me retourne ..\essais\fichier2....
Vous voyez ce que je veux dire ou pas?
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 5 févr. 2009 à 12:27
Bah tu es grand, tu sais débuguer ?
En fait, c'est parce que j'ai pris comme base le tableau bbb au lieu de aaa : Suffit donc de modifier le nom du tableau utilisé dans la boucle qui suit le commentaire "Différence trouvée"
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 4 févr. 2009 à 19:37
Salut
Ca m'étonne de toi ...
Dim Chemin1
As
String =
"C:/test1/test2/test3/fichier1 "
Dim Chemin2
As
String =
"C:/test1/test2/essais/fichier2"
Dim r
As
Long
For r = 1
To Len(Chemin1)
If Chemin1.Substring(r, 1).ToUpper <> Chemin2.Substring(r, 1).ToUpper
Then
MsgBox(Chemin2.Substring(r))
Exit
For
End
If
Next
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 20133 4 févr. 2009 à 20:03
Arf, non, ça ne fait pas ce que je veux, attend, voici le code que j'ai déjà fait :
Shared Function Ouvrir_Fichier(ByVal Ctrl As OpenFileDialog, Optional ByVal FileName_Complete As String "", Optional ByVal FileName_Path As String "") As String
Try
If Ctrl.ShowDialog = DialogResult.OK Then
Dim ret As String = Nothing
Dim dossier() As String = Split(Ctrl.FileName, "", -1)
Dim dossier_2() As String = Split(FileName_Complete, "", -1)
If dossier.Length - 1 >= dossier_2.Length - 1 Then
For i As Integer = 0 To dossier.Length - 1
If dossier_2.Length > i Then Array.Resize(dossier_2, dossier_2.Length + 1)
If dossier(i) <> dossier_2(i) Then
ret = ret & "" & dossier(i)
Else
ret = ret & ""
End If
Next i
Else
For i As Integer = 0 To dossier_2.Length - 1
If dossier.Length > i Then Array.Resize(dossier, dossier.Length + 1)
If dossier_2(i) <> dossier(i) Then
ret = ret & "" & dossier(i)
Else
ret = ret & ""
End If
Next i
End If
If Not FileName_Path = Nothing Then
If My.Computer.FileSystem.FileExists(FileName_Path & ret) = False Then
If MsgBox(LANGUAGEs.Val35 & " " & Ctrl.FileName & " " & LANGUAGEs.Val36, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
My.Computer.FileSystem.CopyFile(Ctrl.FileName, FileName_Path & "" & Ctrl.SafeFileName, True)
Return Ctrl.SafeFileName
Else
Return Ctrl.FileName
End If
Else
Return ret.Substring(1, ret.Length - 1)
End If
Else
Return Ctrl.FileName
End If
Else
Return "CANCEL!"
End If
Catch err As Exception
Deboguer.Err = err
Deboguer.ShowDialog()
End Try
Return Nothing
End Function
Désolé, il n'y a pas de commentaires. Donc comme je l'ai dit, cette fonction permet juste d'obtenir essais/fichier1 quand on a un chemin du genre C:/test/essais/fichier1 et que le chemin duquel on part est C:/test/fichier2....
Bon, c'est compliqué à expliquer, alors essayez cette fonction en mettant le chemin actuel dans FileName_Complete et le dossier dans lequel ce trouve ce fichier dans FileName_Path
Exemple :
MsgBox(Ouvrir_Fichier(OpenFileDialog1, "C:/test/fichier1", "C:/test")
Si vous sélectionner un fichier situé dans C:/test/test2/test3/fichier2, cette fonction va vous renvoyer test2/test3/fichier2...... Voila
Mais je ne sais toujours pas comment faire pour que :
Si j'ai MsgBox(Ouvrir_Fichier(OpenFileDialog1, "C:/test/fichier1", "C:/test")
Et que je sélectionner le fichier C:/boot.ini, il le renvoi ../boot.ini
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 20133 4 févr. 2009 à 21:22
J'avoue que je suis étonné :
J'ai créer une dll qui permet de lire un fichier html en intégralité : les balises, savoir si on est dedans ou pas, lire les attribut, les modifier.... j'ai fait pareil pour du css, j'ai également fait une intellisense et une tabulation intelligente avec tout ça.... et j'arrive pas à faire ce fichu système XD
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 5 févr. 2009 à 08:25
Ca marche pas ne veut rien dire : donne des explications
Vérifie tes histoires de / et de \ : l'exemple fourni tient compte des / alors que peyt-être tu n'en as pas.
En tous les cas, chez ça marche très bien.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 20133 5 févr. 2009 à 12:14
Enfin oui, ton code marche très bien, mais, comment dire, il ne fait pas vraiment ce qu'il faut. En fait, ba, euh, je ne sais pas trop comment l'expliquer.
SI mon répertoire de démarrage (chemin1) est C:/test/test2/test3/fichier et que le chemin2 est C:/test/essais/fichier, il va me retourner uniquement ../essais/fichier au lieu de ../../fichier.
Enfin je ne sais pas trop comment le dire car il n'y a pas tout ça. Essais de voir le code en faisant plusieurs teste avec différent exemples