Memo控件如何把“Unix的换行符”显示为换行? ( 积分: 50 )

  • 主题发起人 主题发起人 animator
  • 开始时间 开始时间
A

animator

Unregistered / Unconfirmed
GUEST, unregistred user!
在 Windows 中回车换行是由ASCII码为10和13的两个字符,也就是CR和LF组成的;
而Unix中只有一个ASCII码为10的字符,就是CR

当把Unix格式的文本显示在Memo控件中时,无法正确换行,换行符显示成一个方框。
我用 StringReplace 函数把该字符替换成 Windows 的回车。可还是不行。

请问该怎么办?
 
在 Windows 中回车换行是由ASCII码为10和13的两个字符,也就是CR和LF组成的;
而Unix中只有一个ASCII码为10的字符,就是CR

当把Unix格式的文本显示在Memo控件中时,无法正确换行,换行符显示成一个方框。
我用 StringReplace 函数把该字符替换成 Windows 的回车。可还是不行。

请问该怎么办?
 
不可能不行吧,show一下你的代码
 
我是在C++ Builder中做的。

char lf = 10;
StringReplace(unixText, lf, "/n", TReplaceFlags()<<rfReplaceAll);
 
改一下就OK了
unixText=StringReplace(unixText, lf, "/n", TReplaceFlags()<<rfReplaceAll);
 
还是不行。你有没有试一下这段代码?

char lf = 10;
unixText = StringReplace(unixText, lf, "/n", TReplaceFlags()<<rfReplaceAll);
Memo1->Text = unixText;

整个字符串还是显示成一行。
 
要用到二进制文件读写。
关于二进制文件读写问题 (0分)
分类:系统相关 monkeyking1983 (2003-03-03 6:23:00)
请问再delphi中如何以二进制读写并处理文件?

cnnoah (2003-03-03 8:01:00)
1.adoquery.savetofile
2.
无类型文件读:
var
UnTypedFile: File;
Buffer: array[0..128] of byte;
NumRecsRead: Integer;
begin
AssignFile(UnTypedFile, "file.data");
Reset(UnTypedFile);
try
BlockRead(UnTypedFile, Buffer, 1, NumRecsRead);
finally
CloseFile(UnTypedFile);
end;
end;
无类型文件写:
var
UnTypedFile: File;
Buffer: array [0..128] of byte;
NumRecsWritten: Integer;
begin
AssignFile(UnTypedFile, 'File1.Dat');
if FileExists('File1.Dat') then
Reset(UnTypedFile);
else Rewrite(UnTypedFile);
try
Seek(UnTypedFile, FileSize(UnTypedFile));
FillChar(Buffer, SizeOf(Buffer), 'Y');
Block(UnTypedFile, Buffer, 1, NumRecsWritten);
finally
CloseFile(UnTypedFile);
end;
end;

cnnoah (2003-03-03 8:10:00)
老兄,没有分也来问呀,不划算。

monkeyking1983 (2003-03-03 22:28:00)
接受答案了.


cnnoah的回答最终被接受。
 
我自己搞定了。
要把那个Unix的换行符替换成 "/r/n"。
unixText = StringReplace(unixText, lf, "/r/n", TReplaceFlags()<<rfReplaceAll);
不过还是谢谢你们两位。
这个问题在大富翁BBS被提过多次了,希望以后的朋友可以知道怎么解决了。
 
多人接受答案了。
 
后退
顶部