Caractère $00 dans un fichier texte

sokoban Messages postés 32 Date d'inscription mardi 4 novembre 2003 Statut Membre Dernière intervention 4 novembre 2006 - 3 oct. 2005 à 23:03
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 - 4 oct. 2005 à 06:45
Bonjour,

J'ai un soucis. J'ai un programme qui doit traiter des fichiers texte que je reçois de l'extérieur... J'utilise donc des trucs du style "TStringList.LoadFromFile" après quoi je fais mes traitements... Mais de temps en temps, dans les fichiers en question, il arrive que les espace $20 soient remplacés par des $00. Et apparemment, le "TStringList.LoadFromFile" gère très mal l'affaire. J'ai donc essayé de me débrouiller avec des TFileStream, des Seek, des Read et des Write, pour retransformer les caractères nuls en caractères ESPACE, mais sans grande réussite. Mon fichier texte final semble s'arrêter là où le premier caractère nul à été rencontré.

Quelqun aurait-il une astuce pour remplacer tous les hexa 00 par des hexa 20 dans un fichier quelconque ?

Merci d'avance.


Ghislain "Sokoban" Martin
http://perso.wanadoo.fr/sokoban

1 réponse

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
4 oct. 2005 à 06:45
salut,

essaye de faire:

var i:integer;

buffer:string;

begin

for i:= 0 to list.count-1 do

begin

if pos(#0,list[i])<>0 then //verifie l'existence du caractee #0

begin

buffer: =list[i]; // transfert à une cahine provisoire pour faire les operations

repeat
buffer[pos(#0,buffer)]:= ' '; //remplace le caractere par #20H
until pos(#0,buffer)<>0 ;//repete l'operation tant qu'il y a in #00

list[i]: =buffer;// rétabli la liste modifiée

end;
end;

end;

bonne prog;
0
Rejoignez-nous