procedure p;
var
f:TextFile;
oemst:OemString;///declared as OemString = Type AnsiString(CP_OEMCP);
begin
AssignFile(f,fileName);
reset(f);
read(f,oemSt);
ShowMessage(oemst);
end;
为了在show message中查看正确编码的oemst,需要声明 setcodepage(oemst,862,FALSE);
如何从oem文件中读取,并确保编译器在oem编码中正确显示?
更新: 使用Oem是最好的,因为我没有指定这个旧的界面。 使用readln assign文件是旧代码的一部分,我宁愿使用旧方法,因为它需要更少的工作,并且测试(为什么我们总是忘记测试?)![在此输入图像描述] [1]
答案 0 :(得分:1)
在D2009及更高版本中,使用旧的Pascal文件方法(如assignfile,read(ln)和write(ln))通常会更好地不,因为它们不支持Unicode。每个人都会建议你改用流。在这种情况下,您实际上可能更好地使用旧方式,因为它不了解Unicode。
当您正确设置代码页时,我认为您需要做的就是使用SetConsoleCP
来设置控制台的代码页。这是一个在Windows单元中声明的Windows API调用。
答案 1 :(得分:1)
SetMultiByteConversionCodePage(862);让事情顺利进行。