主题:请教读写文档程序(望各位帮忙一下)
hahaixix23
[专家分:0] 发布于 2007-09-20 08:37:00
刚学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个回复)
沙发
长尾兔 [专家分:3630] 发布于 2007-09-21 10:08:00
这个问题若说有难点,倒不在“文档读写”上。因为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
(译得水平有点低,不要笑话)
板凳
hahaixix23 [专家分:0] 发布于 2007-09-21 13:22:00
[color=FF0000][size=2][b]谢谢大哥的热心帮助!![/b][/size][/color]
3 楼
hahaixix23 [专家分:0] 发布于 2007-09-21 13:59:00
我进你的博客里面的编程日记看了,但是没有找到你说的那篇文章《用File Of Type打造属于自己的数据库》
4 楼
长尾兔 [专家分:3630] 发布于 2007-09-22 09:35:00
换了台电脑找了一下,URL是:
http://rabbitfox.blog.sohu.com/29948084.html
5 楼
hahaixix23 [专家分:0] 发布于 2007-09-22 16:32:00
看到了,好东西啊,谢谢了
我来回复