关于文本文件中的字符处理,请大侠们看看。 (100分)

  • 主题发起人 主题发起人 pyk1
  • 开始时间 开始时间
P

pyk1

Unregistered / Unconfirmed
GUEST, unregistred user!
1.我有一文本文件,中间包含了非Ascii字符。现在我想将其过滤掉,生成一个新的文本文件,
新文本文件只包含Ascii,该如何做?
2.我如何才能将listview中的内容保存,用的时候再调入。

谢谢您的回答! delphi_x@163.com
 
open file a to read
open file b to wirte
while not end of a do
read ch from a
if ch is ascii
then write ch to b
end of while
close b
close a
 
有中文吗?
应该是非文本字符吧?
 
var
Src, Dst: TMemoryStream;
Tmp: Byte;
i: Integer;
begin
Src := TMemoryStream.Create;
Dst := TMemoryStream.Create;
Src.LoadFromFile('C:/aaa.dat');
for i := 1 to Src.Size do
begin
Src.Read(Tmp, 1);
if (Tmp >= 32) and (Tmp < 128) then
Dst.Write(Tmp, 1);
end;
Dst.Position := 0;
Dst.SaveToFile('C:/aaa.txt');
Src.Free;
Dst.Free;
end;

 
//if (Tmp >= 32) and (Tmp < 128) then
怎么把Tmp < 32也滤了,连回车也没了!
if (Tmp < 128) then
 
请问beta大侠:
0代表结束符么?谢谢您!
 
// 0代表结束符么?
要看你是问的哪个 0 了。

如果是 Dst.Position := 0; 则是代表把流的指针移动到最开始,以用于保存。
如果 0 出现在字符串里面(#0),则表示结束符。

 
那 if Tmp <>0 then
代表除结束符之外了?
 
有中文该怎么办?
 
真正的ASCII码只到127。 后面部分是扩展ASCII码。
既然题目要求是ASCII, 所以不必考虑中文。
 
//那 if Tmp <>0 then
//代表除结束符之外了?
你打开的是文本文件哪有什么#0;
PCHAR差不多!
 
这里所讲的 ASCII 码,肯定是指文本字符。
 
问问大家,要除掉文本文件中间的'#0'(文件结束符),我该怎么办?!
 
后退
顶部