Moin Hansa,
das was in Daniel's Link zu sehen ist, finde ich allerdings etwas aufwändiger, als eine Zeile OemToChar
Mein Beispiel sollte Dir nur zeigen, wie's vor und nach dem Aufruf aussieht.
Du kannst Du
Ascii Datei ja auch in einem Rutsch in einen Filestream einlesen, mit OemToChar umwandeln, und wieder zurückschreiben. Die Länge ändert sich ja nicht.
Da auch im Deutschen, z.B. Namen, französische Zeichen enthalten können, halte ich die Beschränkung auf deutsche Umlaute jedenfalls für gefährlich.
So wäre es allgemein brauchbar (ausser für
Unicode):
Code:
[b]procedure[/b] TForm1.Button1Click(Sender: TObject);
[b]var[/b]
fsWork : TFileStream;
sWork : [b]string[/b];
[b]begin[/b]
[b]if[/b] OpenDialog1.Execute [b]then[/b]
[b]begin[/b]
fsWork := TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
[b]try[/b]
sWork := StringOfChar(#00,fsWork.Size);
fsWork.Read(sWork[1],fsWork.Size);
[b]finally[/b]
FreeAndNil(fsWork);
[b]end[/b];
OemToChar(@sWork[1],@sWork[1]);
fsWork := TFileStream.Create(OpenDialog1.FileName+'.conv',fmCreate);
[b]try[/b]
fsWork.Write(sWork[1],Length(sWork));
[b]finally[/b]
FreeAndNil(fsWork);
[b]end[/b];
[b]end[/b];
[b]end[/b];