Problème de lecture d'un fichier texte mis en mémoire (Lire et afficher un fichier le plus vite possible)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Problème de lecture d'un fichier texte mis en mémoire (Lire et afficher un fichier le plus vite possible)

Message par Shadow »

Salut,

J'ai tenté de reprendre un vieux code pour lire un fichier texte puis de le mettre en mémoire affin de l'afficher ou l'utiliser plus tard, mais je n'y suis pas arrivé :roll:

C'est vraie que ce passage de purebasic en Unicode à mis pas mal de chose en Bazard.
Je suis même pas capable de faire ça, ça crain :roll:

Code : Tout sélectionner

; Lire un fichier a la vitesse de l'éclair
; Par M Dieppedalle David le dimanche 3 octobre 2010

file$ = OpenFileRequester("Sélectionnez un fichier","","Text (.txt)|*.txt|All files (*.*)|*.*",0)
  If file$
    If ReadFile(0, file$)
      length = Lof(0) ; Lit la taille en octets du fichier
      *MemoryID = AllocateMemory(length) ; alloue un bloc mémoire de la taille du fichier "length"
      If *MemoryID ; si l'allacation a bien fonctionner ont continue
        ReadData(0, *MemoryID, length)   ; Lit les données du fichier et les place dans le bloc mémoire "*MemoryID" de la taille correspondant à "length"
        *Fichier.String = @*MemoryID ; "*Fichier" a pour valeur l'adresse où réside la chaîne de caractères en mémoire "*MemoryID"
        Fichier$ = *Fichier\s ; "Fichier$" à pour valeur le texte où réside la chaîne de caractères en mémoire "*MemoryID"
        Debug Fichier$
      EndIf
      CloseFile(0)
    EndIf
  EndIf
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Problème de lecture d'un fichier texte mis en mémoire (Lire et afficher un fichier le plus vite possible)

Message par Shadow »

Bon, j'ai trouvé grâce à un sujet sur le forum et j'ai donc modifié le code précédent:

Code : Tout sélectionner

Fichier$ = OpenFileRequester("Sélectionnez un fichier","","Text (.txt)|*.txt|All files (*.*)|*.*",0)

; Si il y a un fichier à lire.
If Fichier$
  
  ; Si le fichier peut être lue.
  If ReadFile(0, Fichier$) 
    
    Length.i = Lof(0) ; Lit la taille en octets du fichier 
    *MemoryID = AllocateMemory(Length.i) ; Alloue un bloc mémoire de la taille du fichier "Length.i"
    
    If *MemoryID ; Si l'allocation a bien fonctionner ont continue.
      ReadData(0, *MemoryID, Length.i)   ; Lit les données du fichier et les place dans le bloc mémoire "*MemoryID" de la taille correspondant à "Length.i".
      Donnees$ = PeekS(*MemoryID, Length.i, #PB_UTF8) ; Lis la chaîne de caractère en mémoire au format Ascii, vous pouvez utiliser: #PB_UTF8 | #PB_ByteLength, à la place de #PB_Ascii pour afficher correctement les caractère accentué et spéciaux.
      Debug Donnees$ ; Affiche les données.
    EndIf
    
    CloseFile(0) ; Ferme le fichier.
    
  EndIf
  
EndIf
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre