
Je me suis amusé à faire un petit exemple qui lit un fichier en mémoire et qui affiche chaque ligne.
Et en plus, il crée son fichier texte lui-même pour que vous n'alliez pas en chercher un ailleurs!!!
Elle est pas belle, la vie



PS : Si quelqu'un peut répondre à la question, au début du code

Code : Tout sélectionner
#NewFile = 0
#LineMax = 50 ; <-- Maximum, 520 chez moi : Et vous ???
#CharMax = 20 ; <-- Maximum, 100 chez moi : Et vous ???
; En mettant le maximum en nbre de caractères et en nbres de lignes,
; ça me donne une taille de 64 Ko sur le disque (65536 octets).
; Est-ce que c'est la limite pour lire un fichier en mémoire???
;- Message
NoMsg$ = "Il n'y a pas de fichier à lire. !"
Var$ = Chr(34)+"NewFile"+Chr(34)
L1$ = "Créez d'abord un fichier en mettant la variable "+Var$+" à 1."+Chr(10)
L2$ = "Lancez ensuite le programme pour créer un nouveau fichier"+Chr(10)+Chr(10)
L3$ = "Mettez ensuite la variable "+Var$+" à 0 pour lire le fichier"+Chr(10)
L4$ = "Vous pourrez créer un nouveau fichier quand vous le voudrez"+Chr(10)
L5$ = "en mettant de nouveau la variable "+Var$+" à 1"+Chr(10)+Chr(10)
L6$ = "Chris ;o)"
Message$ = L1$+L2$+L3$+L4$+L5$+L6$
;- Création du fichier
;/ Cette partie crée un petit fichier texte composé de
;/ caractères aléatoires. (Les lettres en majuscules)
;/ #LineMax est le nombre maxi de lignes que vous voulez mettre dans le fichier.
;/ #CharMax est le nombre maxi de caractères par ligne.
;/ Si #NewFile est à 1, crée un nouveau fichier.
If #NewFile = 1
If CreateFile(0,"Random.txt")
For Line = 0 To #LineMax
Ligne$ = ""
For Char = 1 To #CharMax
idx = Random(25) : idx + 65
Ligne$ + Chr(idx)
Next Char
Ligne$ = "Ligne " + Str(Line) + " = " + Ligne$ + " ---> Fin"
WriteStringN(Ligne$)
Next Line
CloseFile(0)
EndIf
EndIf
;- Chargement du fichier en mémoire
Fichier$ = "Random.txt" ; Initialisations
LenFile.l = FileSize(Fichier$) ; Longueur du fichier
If ReadFile(0,Fichier$) ; Si on peut ouvrir le fichier
If AllocateMemory(0,LenFile,0) ; on réserve une zone mémoire
*Pointer = MemoryID() ; on crée un pointeur sur son adresse
ReadData(*Pointer,LenFile) ; on charge le fichier en mémoire
EndIf
CloseFile(0) ; et on le referme
Else
MessageRequester(NoMsg$,Message$,#PB_MessageRequester_Ok|#MB_ICONSTOP)
End
EndIf
;- Lecture des données depuis la mémoire
start = 1 : pos = 0 ; Initialisations
RetChar$ = Chr(13) + Chr(10) ; Retour chariot
tmp$ = PeekS(*Pointer,LenFile) ; Chargement du fichier dans un string
Repeat
pos = FindString(tmp$,RetChar$,start) ; recherche du retour chariot
g$ = Mid(tmp$,start,pos-start) ; récupération de la ligne
start = pos + 2 ; mise à jour des variables
If g$ <> "" ; Si la ligne n'est pas vide
Debug g$ ; on l'affiche
EndIf
Until pos = 0; ; jusqu'à a fin du fichier
