Si dans mon fichier c'est écrit "bonjour comment ça va" par exemple, je sais comment placer le pointeur sur un caractère et le remplacer par un autre (avec writedata ou writestring) mais comment insérer un nouveau mot entre deux mots existant, disons d'insérer "mon frère" entre "salut" et "comment". De plus je cherche comment supprimer des caractères, c'est à dire pas seulement les remplacer mais les éliminer complètement.
Je suis sûr qu'il doit y avoir une fonction très simple mais j'ai cherché dans tout le manuel d'aide et je n'ai rien trouve.
Merci d'avance
Insérer ou supprimer des caractères dans un fichier
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
Re: Insérer ou supprimer des caractères dans un fichier
Code : Tout sélectionner
Procedure insererChaine(file, string.s, offset.i)
Protected *buffer, bufferSize.i
If IsFile(file) ;on teste si le fichier est correctement ouvert
FileSeek(file, offset) ;on se place à l'endroit où l'on veut inserer du texte
bufferSize = Lof(file) - Loc(file) ;taille des données restantes
*buffer = AllocateMemory(bufferSize)
ReadData(file, *buffer, bufferSize) ;on lit les données restantes
FileSeek(file, offset) ;on se replace à l'endroit voulu
WriteString(file, string) ;on écrit le texte à inserer
WriteData(file, *buffer, bufferSize) ;on reécrit les données qui vont derrière
FreeMemory(*buffer)
TruncateFile(file) ;on coupe la fin du fichier
EndIf
EndProcedure
;*****TEST*****
;creation d'un fichier
path.s = "C:\Users\Kévin\Desktop\test.txt"
CreateFile(0, path)
WriteString(0, "bonjour comment ça va")
;Insertion du texte voulu
insererChaine(0, " mon frère", 7)
CloseFile(file)
RunProgram(path)
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: Insérer ou supprimer des caractères dans un fichier
merci beaucoup pour l'exemple detaille
en fait j'ai eu la meme idee mais c'est tres lent car j'utilise des grands fichiers et j'insere plein de trucs a toutes sortes d'endroits.
est ce qu'il n'y a pas une fonction plus simple pour cela?
en fait j'ai eu la meme idee mais c'est tres lent car j'utilise des grands fichiers et j'insere plein de trucs a toutes sortes d'endroits.
est ce qu'il n'y a pas une fonction plus simple pour cela?
Re: Insérer ou supprimer des caractères dans un fichier
Assez long comment ?
Peut-être devrais tu mettre tout le contenu de ton texte en mémoire dans un string$ puis faire les modifs après ?
Peut-être devrais tu mettre tout le contenu de ton texte en mémoire dans un string$ puis faire les modifs après ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: Insérer ou supprimer des caractères dans un fichier
ce sera difficile
en fait je pensais qu'il existait une fonction directe mais apparement ca n'existe pas
esperons que dans la prochaine version fred y pensera
en fait je pensais qu'il existait une fonction directe mais apparement ca n'existe pas
esperons que dans la prochaine version fred y pensera
Re: Insérer ou supprimer des caractères dans un fichier
Grands comment ? Quels genre de trucs ?Parole De JOJO a écrit :en fait j'ai eu la meme idee mais c'est tres lent car j'utilise des grands fichiers et j'insere plein de trucs a toutes sortes d'endroits.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Insérer ou supprimer des caractères dans un fichier
il faut voir un fichier comme un tableau de char (.c) , ce n'est qu'une suite de .c , se qui forme ton fichier.
il faut convertir ton fichier en tableau ( linked list ) et via des insertelement() tu ajoutes ce que tu veut , ou tu veut , et ce de manière rapide.
ex :
y a 3 fonction :
LoadFileData(File$) <- charge un fichier et te renvois un pointeur
InsertStringToFileData(*FileData.FileData,string.s,position.i) <- tu ajoutes un string ou tu veut grace au pointeur que tu as eu avec la fct° du dessus.
SaveFileData(*FileData.FileData) <- tu sauvegardes.
Voila , à toi de rajouté sur cette base la suppression de mot
@+
il faut convertir ton fichier en tableau ( linked list ) et via des insertelement() tu ajoutes ce que tu veut , ou tu veut , et ce de manière rapide.
ex :
Code : Tout sélectionner
Structure FileData
lof.i
filename.s
List character.c()
EndStructure
Procedure.i LoadFileData(File$)
file = OpenFile(#PB_Any,File$)
If file
*FileData.FileData = AllocateMemory(SizeOf(FileData))
*FileData\lof = Lof(file)
*FileData\filename = File$
InitializeStructure(*FileData,FileData)
*Buffer = AllocateMemory(Lof(file))
ReadData(file,*Buffer,Lof(file))
CloseFile(file)
For it = 0 To *FileData\lof -1
AddElement(*FileData\character())
*FileData\character() = PeekC(*Buffer+it)
Next
FreeMemory(*Buffer)
ProcedureReturn *FileData
Else
ProcedureReturn -1
EndIf
EndProcedure
Procedure SaveFileData(*FileData.FileData)
If OpenFile(0,*FileData\filename)
ForEach *FileData\character()
WriteCharacter(0,*FileData\character())
Next
CloseFile(0)
EndIf
EndProcedure
Procedure InsertStringToFileData(*FileData.FileData,string.s,position.i)
For it = 0 To Len(string)-1
SelectElement(*FileData\character(),position+it)
InsertElement(*FileData\character())
*FileData\character() = Asc(Mid(string,it+1,1))
Next
EndProcedure
LoadFileData(File$) <- charge un fichier et te renvois un pointeur
InsertStringToFileData(*FileData.FileData,string.s,position.i) <- tu ajoutes un string ou tu veut grace au pointeur que tu as eu avec la fct° du dessus.
SaveFileData(*FileData.FileData) <- tu sauvegardes.
Voila , à toi de rajouté sur cette base la suppression de mot

@+