windows – EOLN中的Delphi 2006错误
发布时间:2020-12-14 04:22:46 所属栏目:Windows 来源:网络整理
导读:我认为D2006(WIN 32)中的EOLN功能存在一个错误,当应用于具有Unix类型换行符(LF)的文本文件时,此LF是输入缓冲区中的第一个字符. 错误的来源是线 TEST [EDX].TTextRec.Mode,tfCRLF 哪个应该正确阅读 TEST [EDX].TTextRec.Flags,tfCRLF Flags字段存储线制动器样
我认为D2006(WIN 32)中的EOLN功能存在一个错误,当应用于具有Unix类型换行符(LF)的文本文件时,此LF是输入缓冲区中的第一个字符.
错误的来源是线 TEST [EDX].TTextRec.Mode,tfCRLF 哪个应该正确阅读 TEST [EDX].TTextRec.Flags,tfCRLF Flags字段存储线制动器样式,而不是存储输入/输出模式的Mode字段. 以上行是Sytem单元下面的片段的一部分,当需要重新填充缓冲区时调用该片段.该错误未被注意,因为Mode字段是输入文件的奇数(这是EOLN通常使用的模式) fmInput = $D7B1; 匹配tfCRLF(= 1)中为Windows生成的文本文件设置的唯一位.较新版本的Delphi是否仍然具有相同的EOLN编码? function _Eoln(var t: TTextRec): Boolean; asm . . . @@readChar: PUSH EAX CALL _ReadChar POP EDX CMP AH,cEOF JE @@eof DEC [EDX].TTextRec.BufPos XOR ECX,ECX XCHG ECX,EAX TEST [EDX].TTextRec.Mode,tfCRLF JE @@testLF CMP CL,cCR JE @@eol JMP @@exit @@eol: @@eof: MOV AL,1 @@exit: end; 另一个好奇心:这个EOLN功能,当应用于Windows(CRLF)文件类型时,实际上只检查CR,就好像它检查了一个(旧的?)Mac文件,没有检查过LF!
它没有在2007年修复.
这是Delphi 2007的代码 function _Eoln(var t: TTextRec): Boolean; asm .... TEST [EDX].TTextRec.Mode,tfCRLF <<-- incorrect reference still there JE @@testLF CMP CL,cCR JE @@eol JMP @@exit @@eol: @@eof: MOV AL,1 @@exit: end; 在XE6中修复 我没有检查过它们之间的任何回归. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Windows Phone字符编码
- Windows Server 2003,DHCP:地址池和预留
- windows-server-2008 – 你在Windows Server上使
- windows-server-2003 – 如何创建PDF打印服务器?
- 以编程方式在Windows 8上排序文件夹
- 将unsigned char *(uint8_t *)转换为const char
- windows – Delphi中的GDI行间距?
- 我可以使用Microsoft Parallel Extensions to .N
- remote-desktop – 为什么RDP不接受我存储的凭据
- 关闭Windows Defender保护
热点阅读