回 帖 发 新 帖 刷新版面

主题:请教读写文档程序(望各位帮忙一下)

刚学delphi,最近要做一个东西,实现的功能就是先将一个txt文档文件导入memo中,再从memo顶部往下读,边读边将选定字母更改,将所有数字乘以-1。希望那位大哥能够帮忙指点一下,谢谢了,如:
将GOTO  /   75.05000,  -60.05000,  -43.66667
GOTO  /   75.05000,  -60.05000,  -13.66667
GOTO  /   65.05000,  -60.05000,  -13.66667
GOTO  /   65.05000,  -40.05000,  -13.66667
改成:L  -75.05000, 60.05000, 43.66667
L  -75.05000, 60.05000, 13.66667
L  -65.05000, 60.05000, 13.66667
L  -65.05000, 40.05000, 13.66667

回复列表 (共5个回复)

沙发

这个问题若说有难点,倒不在“文档读写”上。因为TMemo提供了很简单的“从文本文件读”和“写入文本文件”的方法,也就是下面的Button1Click和Button3Click中的两句。

下面是我给写的代码,你测试一下。其中源文本文件中的格式,是按照贴子中给出的格式,因此在使Copy、Format、Length等函数时,一些长度值我直接用了常量。你要正确控制这些常量,如果源文本文件格式有变化,也要调整这些值。

procedure TForm1.Button1Click(Sender: TObject);//从C:\Test.txt读入Memo1
begin
  Self.Memo1.Lines.LoadFromFile('C:\Test.TXT');
end;

procedure TForm1.Button2Click(Sender: TObject);//处理过程
var
  L : integer;
  TempStr : string;
  SS : TStringList;
  D1, D2, D3 : double;
begin
  SS := TStringList.Create;
  for L := 0 to Self.Memo1.Lines.Count-1 do begin
    if Length(Self.Memo1.Lines[L])<11 then Break; //这句只是我加的简单的异常处理
    TempStr := Copy(Self.Memo1.Lines[L], 11, Length(Self.Memo1.Lines[L])-10);
    SS.Text := StringReplace(TempStr, ',  ', #10, [rfReplaceAll]);
    if SS.Count < 3 then Break; //这句只是我加的简单的异常处理
    D1 := -1 * StrtoFloat(SS[0]);
    D2 := -1 * StrtoFloat(SS[1]);
    D3 := -1 * StrtoFloat(SS[2]);
    Self.Memo1.Lines[L] := Format('L  %.5f, %.5f, %.5f', [D1, D2, D3]);
  end;
  SS.Free;
end;

procedure TForm1.Button3Click(Sender: TObject);//把处理后的Memo1内容导出到C:\result.txt
begin
  Self.Memo1.Lines.SaveToFile('C:\Result.TXT');
end;

顺便说一下,如果改变思路,使用“自定义记录文档”,不使用标准的TXT文件,在一定程度上说,代码会更严谨。
关于这种思路,你可以参考《Delphi5开发人员指南》中关于文件处理的相关知识,也可以到我的博客去看,有我曲译的一篇英文资料(题目好象是《用File Of Type打造属于自己的数据库》),因为我这里单位的电脑,装的是Windows98,IE版本有点低,打不开Sohu博客,你自己去找一下吧,网址是 http://RabbitFox.blog.sohu.com
(译得水平有点低,不要笑话)

板凳

[color=FF0000][size=2][b]谢谢大哥的热心帮助!![/b][/size][/color]

3 楼

我进你的博客里面的编程日记看了,但是没有找到你说的那篇文章《用File Of Type打造属于自己的数据库》

4 楼

换了台电脑找了一下,URL是:

http://rabbitfox.blog.sohu.com/29948084.html

5 楼

看到了,好东西啊,谢谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册