确定 Unix 或 Windows EOL 字符
Determine Unix or Windows EOL character
我正在读取文件并且有兴趣了解生成该文件的操作系统。它可以是 Windows 或 Unix。我试图通过读取行尾字符来确定操作系统。我很难在行尾获取角色。我尝试了以下代码,但它总是 returns -2 而不管操作系统(根据文档是正确的)。感谢您的帮助。
def var cLog as char init "myfile.log".
input from value (cLog).
seek input to end.
readkey.
message lastkey.
这假设文件中确实有行尾,所以可能不是一个完美的解决方案(另一方面 - 如果没有 - 你怎么知道)。
我跳过 SEEK
部分。相反,我只是检查文件中的模式。
CHR(13) + CHR(10) 的写法与 \r\n
的写法类似。这也可以在 Progress ABL 中转义 ~r~n
(见下文)。
DEFINE VARIABLE cFile AS LONGCHAR NO-UNDO.
COPY-LOB FROM FILE "c:\temp\file.txt" TO cFile.
IF cFile MATCHES "*" + CHR(13) + CHR(10) + "*" THEN DO:
MESSAGE "Likely a Windows-file" VIEW-AS ALERT-BOX.
END.
ELSE IF cFile MATCHES "*" + CHR(13) + "*" THEN DO:
MESSAGE "Likely a Mac file" VIEW-AS ALERT-BOX.
END.
ELSE IF cFile MATCHES "*" + CHR(10) + "*" THEN DO:
MESSAGE "Likely a Linux-file" VIEW-AS ALERT-BOX.
END.
ELSE DO:
MESSAGE "I cannot tell what file this is" VIEW-AS ALERT-BOX.
END.
带有转义字符
DEFINE VARIABLE cFile AS LONGCHAR NO-UNDO.
COPY-LOB FROM FILE "c:\temp\file.txt" TO cFile.
IF cFile MATCHES "*~r~n*" THEN DO:
MESSAGE "Likely a Windows-file" VIEW-AS ALERT-BOX.
END.
ELSE IF cFile MATCHES "*~r*" THEN DO:
MESSAGE "Likely a Mac file" VIEW-AS ALERT-BOX.
END.
ELSE IF cFile MATCHES "*~n*" THEN DO:
MESSAGE "Likely a Linux-file" VIEW-AS ALERT-BOX.
END.
ELSE DO:
MESSAGE "I cannot tell what file this is" VIEW-AS ALERT-BOX.
END.
我正在读取文件并且有兴趣了解生成该文件的操作系统。它可以是 Windows 或 Unix。我试图通过读取行尾字符来确定操作系统。我很难在行尾获取角色。我尝试了以下代码,但它总是 returns -2 而不管操作系统(根据文档是正确的)。感谢您的帮助。
def var cLog as char init "myfile.log".
input from value (cLog).
seek input to end.
readkey.
message lastkey.
这假设文件中确实有行尾,所以可能不是一个完美的解决方案(另一方面 - 如果没有 - 你怎么知道)。
我跳过 SEEK
部分。相反,我只是检查文件中的模式。
CHR(13) + CHR(10) 的写法与 \r\n
的写法类似。这也可以在 Progress ABL 中转义 ~r~n
(见下文)。
DEFINE VARIABLE cFile AS LONGCHAR NO-UNDO.
COPY-LOB FROM FILE "c:\temp\file.txt" TO cFile.
IF cFile MATCHES "*" + CHR(13) + CHR(10) + "*" THEN DO:
MESSAGE "Likely a Windows-file" VIEW-AS ALERT-BOX.
END.
ELSE IF cFile MATCHES "*" + CHR(13) + "*" THEN DO:
MESSAGE "Likely a Mac file" VIEW-AS ALERT-BOX.
END.
ELSE IF cFile MATCHES "*" + CHR(10) + "*" THEN DO:
MESSAGE "Likely a Linux-file" VIEW-AS ALERT-BOX.
END.
ELSE DO:
MESSAGE "I cannot tell what file this is" VIEW-AS ALERT-BOX.
END.
带有转义字符
DEFINE VARIABLE cFile AS LONGCHAR NO-UNDO.
COPY-LOB FROM FILE "c:\temp\file.txt" TO cFile.
IF cFile MATCHES "*~r~n*" THEN DO:
MESSAGE "Likely a Windows-file" VIEW-AS ALERT-BOX.
END.
ELSE IF cFile MATCHES "*~r*" THEN DO:
MESSAGE "Likely a Mac file" VIEW-AS ALERT-BOX.
END.
ELSE IF cFile MATCHES "*~n*" THEN DO:
MESSAGE "Likely a Linux-file" VIEW-AS ALERT-BOX.
END.
ELSE DO:
MESSAGE "I cannot tell what file this is" VIEW-AS ALERT-BOX.
END.