J'utilise cette fonction pour lire le fichier à chaîneRemplacer la chaîne qui contient # 0?
function LoadFile(const FileName: TFileName): string;
begin
with TFileStream.Create(FileName,
fmOpenRead or fmShareDenyWrite) do begin
try
SetLength(Result, Size);
Read(Pointer(Result)^, Size);
except
Result := '';
Free;
raise;
end;
Free;
end;
end;
Voici le texte du fichier:
version
Voici la valeur de retour de LoadFile:
'ÿþv'#0'e'#0'r'#0's'#0'i'#0'o'#0'n'#0
Je veux faire une le nouveau fichier contient "verabc". Le problème est que j'ai toujours un problème pour remplacer "sion" par "abc". J'utilise D2007. Si j'enlève tout # 0 alors le résultat devient un caractère chinois.
Rob, je crée un fichier avec le bloc-notes et le remplit avec "version" puis en utilisant la fonction ci-dessus, j'ai toujours le caractère unicode dans ma variable. Est-ce la règle? J'utilise D2007 & Vista. –
ah désolé, il y a quelques problèmes avec mon éditeur. J'ouvre le fichier avec le bloc-notes et tout se passe bien !! –
Évidemment, l'encodage par défaut dans Vista UTF-16. Il est temps. Si vous avez vraiment besoin d'un encodage différent, utilisez la boîte de dialogue "enregistrer sous" et choisissez quelque chose de différent.Tout se passe bien lorsque vous ouvrez le fichier dans le Bloc-notes, car il utilise la procédure que j'ai décrite dans ma réponse. C'est même un peu plus compliqué que ça, car il prend aussi en compte le codage ANSI. –