Ouverture partielle fichier texte

Résolu
Le Papa de Thibaut Messages postés 53 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 7 mars 2015 - 28 juil. 2007 à 23:17
Le Papa de Thibaut Messages postés 53 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 7 mars 2015 - 30 juil. 2007 à 14:48
    Bonjour,

    Je souhaite ouvrir des fichiers pour en extraire des données.
    Lorsque je charge un fichier de plusieurs mégas dans une richtextbox, ça met du temps à charger or, les 500 premiers caractères me suffisent amplement.
Comment faire pour ne charger que les 500 premiers caractères d'un fichier sans devoir TOUT charger?
    D'avance merci.

7 réponses

42wawa42 Messages postés 143 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 6 septembre 2011
29 juil. 2007 à 20:11
Hello Le Papa de son fils...

La solution de Mortalino et votre réponse donne une erreur (ERR 62), si vous  avez un fichier texte normal il n’y a pas d’erreur.

Je ne sais pas, quelle présentation vous voulez  avoir.
Des caractères des chiffres ou des valeurs hexadécimal.

Pour les caractères il faut filtrer les valeurs de 0 a 31 (00h as 1Fh) car il influence la présentation sur votre écran.

Chiffres et Hexadécimal.

Une transformation de chaque byte soit en décimal ou hexadécimal n’est pas un grand problem.
 
Option Explicit

Const strFile As String = "C:\Documents and Settings\Daniel\My Documents\garmin\Scoutes.gdb"

Private Sub Command1_Click()
    Dim strText As String
    Dim i As Integer
    Dim s As Byte
    Dim strS As String
Open strFile For Binary As #1
For i = 1 To 500
    Get #1, i, s
        If Len(Hex(s)) = 1 Then
            strS = "0" & Hex(s)
        Else
            strS = Hex(s)
        End If
    strText = strText & strS + " "
Next i
Close #FF
MsgBox strText & i
Text1.Text = strText

End Sub

Private Sub Form_Load()
    Dim strText As String
    Dim i As Integer
    Dim s As Byte
    Dim strS As String
Open strFile For Binary As #1
For i = 1 To 500
    Get #1, i, s
    strS = CStr(s)
    strText = strText & s & " "
Next i
Close #FF
MsgBox strText & i
Text1.Text = strText
End Sub

Voila une solution pour papa...

A Plus sur VBFrance.com
42wawa42  
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 juil. 2007 à 23:25
salut,,

exemple très simple :

Option Explicit

Const strFile As String = "C:\documents and
settings\mortalino\Bureau\test.txt"

Private Sub Form_Load()
    Dim FF As Integer: FF = FreeFile
    Dim strText As String
    
Open strFile For Input As #FF
        strText = Input(500, #FF)
Close #FF
MsgBox strText

End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

(
0
Le Papa de Thibaut Messages postés 53 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 7 mars 2015 1
29 juil. 2007 à 00:08
Merci pour la réponse mais...

Dim A as string
Open Chemin for input as #1
A = Input (500,#1)
Close #1

réponse : "Err 62: L'entrée dépasse la fin de fichier"
sans doute car le fichier contient des caractères chr(0) qui se baladent.
Je ne souhaite pas m'arrêter avant d'avoir obtenu mes 500 caractères.

Merci de m'aider à résoudre ce très très léger bug.
0
Le Papa de Thibaut Messages postés 53 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 7 mars 2015 1
29 juil. 2007 à 22:34
Merci beaucoup
L'exemple m'a aidé à faire ce que je voulais
pour info, cela me sert à extraire la date de prise des photos enregistrées en jpeg. Ainsi, je peux classer les photos de mon bébé par date réelle de la photo et non par date de copie / modification des fichiers.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
42wawa42 Messages postés 143 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 6 septembre 2011
29 juil. 2007 à 22:52
Hello papa il y a une petite erreur
"Close #FF" a changer "Close #1"

Voila papa sorry ton fils Thibaut

A plus sur VBFrance.com
42wawa42
0
42wawa42 Messages postés 143 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 6 septembre 2011
30 juil. 2007 à 02:30
Pour la date du fichier jpg voila un solution...

Private Sub Command2_Click()
Dim strText As String
Dim i As Integer
Dim s As Byte
Dim strS As String


Open strFile For Binary As #1
For i = &HB1 To &HB1 + 18
Get #1, i, s
    strText = strText & Chr(s)
Next i
Close #1
MsgBox strText
Text1.Text = strText


End Sub

Bonne le papa de Thibaud


A plus sur VBFrance.com
42wawa42


 
0
Le Papa de Thibaut Messages postés 53 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 7 mars 2015 1
30 juil. 2007 à 14:48
Merci pour ta seconde réponse mais, elle ne peut pas marcher car la date se trouve après un tas d'informations à longueur variables.
***************
Ma solution:
Je cherche le caractère    :    (2 points)
et je controle que je suis bien tombé sur ma date qui commence 4 caractères avant
le cas échéant, je cherche plus loin.
         Exemple de date      2006:09:03 16:10:4
Dans mes statistiques, la date se trouve à l'emplacement 292 au maximum donc, en prenant les 400 ou 500 premiers caractères, je dois tomber dessus si c'est bien un jpeg.
ca marche tres bien.

Mon seul probleme étant de devoir charger des fichiers de 3Mo pour ne lire que les 400 premiers caractères. Quand on veut traiter plus de 1000 fichiers, on aime gagner quelques secondes à chaque scrut de boucle... Ta réponse "acceptée" m'a permi de comprendre binary et byte, ce qui est la solution du chargement partiel

merci, a + sur VB
0
Rejoignez-nous