我今天注意到,在D2009(更新为1)中,TStringStream.ReadString不再像以前使用D2007一样移动Stream中的Position。
因此,在MyStringStream.ReadString(10)上循环将始终读取流的第1个10个字符,而不是继续前进并使所有流10个字符乘以10个字符。
我检查了文档,它仍然说ReadString应该移动Position ...
任何人都可以确认这是D2009代码中的错误还是设计更改(以及原因)和文档已过时?
谢谢...

更新:QC #68582中报告的问题

最佳答案

绝对是一个错误,一个丑陋的兼容性破坏。如果检查Classes.pas,您将看到ReadString的Unicode和非Unicode版本。非Unicode版本会递增FPosition,而Unicode不会。原始D2009和Update 1的行为均相同。

请在QC中报告。

09-27 07:31