cs_Hobby
Messages postés116Date d'inscriptionmercredi 5 juin 2002StatutMembreDernière intervention17 septembre 2008
-
2 août 2002 à 16:37
cs_Hobby
Messages postés116Date d'inscriptionmercredi 5 juin 2002StatutMembreDernière intervention17 septembre 2008
-
6 août 2002 à 00:24
Bonjour,
Pour l'instant j'utilise cette routine pour charger des fichier texte dans une variable (pour après faire une recherche):
Open strFileList(longE) For Input As #1
Do While Not EOF(1)
DoEvents 'Juste pour pouvoir faire un Cancel
Line Input #1, strA
strStoreInRam = strStoreInRam + strA Loop
Close #1
thiosyiasar
Messages postés186Date d'inscriptionlundi 11 mars 2002StatutMembreDernière intervention30 novembre 20103 2 août 2002 à 18:13
Ajout le référence Microsoft Scripting Runtime
puis
Public Sub test()
Debug.Print getFichier("c:\test.txt")
End Sub
Public Function getFichier(chemin As String) As String
Dim oFso As Scripting.FileSystemObject
Dim oFile As Scripting.File
Set oFso = New Scripting.FileSystemObject
Set oFile = oFso.GetFile(chemin)
getFichier = oFile.OpenAsTextStream(ForReading).ReadAll
End Function
cs_Hobby
Messages postés116Date d'inscriptionmercredi 5 juin 2002StatutMembreDernière intervention17 septembre 2008 5 août 2002 à 09:16
Impecable, merci.
Mais, ma routine, certe beaucoup plus lente, avait un aventage, c'est que les lignes d'un texte était coller l'une a l'autre (pas de CR+LF).
De plus j'utilise une variante qui met a la place du CR+LF un caractère.
Il y a t'il moyen de faire la même chose ?
Merci
Olivier
Ps: Mon but est de faire des recherches dans le texte, pour extraire certaine information, je ne modifie en rien celui-ci. Je le vire quant j'ai fini.
thiosyiasar
Messages postés186Date d'inscriptionlundi 11 mars 2002StatutMembreDernière intervention30 novembre 20103 5 août 2002 à 11:13
Tu peux remplacer tous les CRLF d'une chaine d'un coup avec :
chaine = Replace(chaine, VbCrLf, "")
Tu peux aussi lire le fichier ligne par ligne, mais ce sera plus lent :
Public Function getFichier(chemin As String) As String
Dim oFso As Scripting.FileSystemObject
Dim oFile As Scripting.File ' Fichier
Dim oTextStream As Scripting.TextStream ' Flux de texte
Dim sTemp As String
Set oFso = New Scripting.FileSystemObject
Set oFile = oFso.GetFile(chemin)
Set oTextStream = oFile.OpenAsTextStream(ForReading)
' Pour chaque ligne tant qu'on est pas à la fin du flux
Do While Not oTextStream.AtEndOfStream
sTemp = sTemp & oTextStream.ReadLine
Loop
getFichier = sTemp
End Function
cs_Hobby
Messages postés116Date d'inscriptionmercredi 5 juin 2002StatutMembreDernière intervention17 septembre 2008 6 août 2002 à 00:23
merci de ta patience.
>Tu peux remplacer tous les CRLF d'une chaine d'un coup avec :
>chaine = Replace(chaine, VbCrLf, "")
Je connaissais pas cette fonction...
Encore merci, cela va beaucoup m'aidé.
a+
Olivier
Tu peux aussi lire le fichier ligne par ligne, mais ce sera plus lent :
Public Function getFichier(chemin As String) As String
Dim oFso As Scripting.FileSystemObject
Dim oFile As Scripting.File ' Fichier
Dim oTextStream As Scripting.TextStream ' Flux de texte
Dim sTemp As String
Set oFso = New Scripting.FileSystemObject
Set oFile = oFso.GetFile(chemin)
Set oTextStream = oFile.OpenAsTextStream(ForReading)
' Pour chaque ligne tant qu'on est pas à la fin du flux
Do While Not oTextStream.AtEndOfStream
sTemp = sTemp & oTextStream.ReadLine
Loop
getFichier = sTemp
End Function