delphi对memo的编辑

来源:百度知道 编辑:UC知道 时间:2024/06/14 02:51:40
内容如下:
查找memo1中的含有如下内容的数据:
1, DBUSER , B1800*800*80(L) , CB, 0, 0, 0, 0, 1, 0.207
2, DBUSER , B1350*1000*50 , CC, 0, 0, 0, 0, 0, 0
3, DBUSER , B400*200*12 , CC, 0, 0, 0, 0, 0, 0
4, DBUSER , B500*900*50 , CC, 0, 0, 0, 0, 0, 0
5, DBUSER , B1800*800*50(L) , CB, 0, 0, 0, 0, 1

并将这些内容改为另一种,即如下的形式写入memo2中,用memo2.lines.add():
sectype,1,beam,hrec, B1800*800*80
secdata,0.8,1.8,0.08,0.08,0.08,0.08
sectype,2,beam,hrec, B1350*1000*50
secdata,1,1.35,0.05,0.05,0.05,0.05
sectype,3,beam,hrec, B400*200*12
secdata,0.2,0.4,0.012,0.012,0.012,0.012
sectype,4,beam,hrec, B500*900*50
secdata,0.9,0.5,0.05,0.05,0.05,0.05
sectype,5,beam,hrec, B1800*800*50
secdata,0.8,1.8,0.05,0.05,0.05,0.05

secdata后面的数和B后面的数是1/1000的关系,如0.8=8/1000,1.8=1800/1000,
要求就是上面说的,希望高手能够赐教,解决了再加50分。要是没明白我的表达,可以百度消息我

//按照你给出的5行数据,一下的代码我测试可以完成你要的效果,不知道你其他的数据有没有不同的格式

procedure ChangeStr(s :string;n :Integer);
var
tmp,n1,n2,n3 :string;
PosCount,iPos :Integer;
begin
PosCount := 0;
while PosCount < 3 do
begin
iPos := Pos(',',s);
if iPos > 0 then
begin
Inc(PosCount);
if PosCount = 3 then
s := Trim(Copy(s,1,iPos-1))
else
s := Copy(s,iPos+1,Length(s)-iPos);
end
else
begin
Form1.Memo2.Lines.Add('memo1中第'+inttostr(n+1)+'行数据有错误格式,转换失败');
Exit;
end;
end;
iPos := Pos('(L)',s);
if iPos > 0 then
s := Copy(s,1,iPos-1);
tmp := s;
n1 := Copy(s,2,Pos('*',s)-2);
s := Copy(s,Pos('*',s)+1,Length(s)-Pos('*',s));
n2 := Copy(s,1,Pos('*',s)-1);
n3 := Copy(s,Pos('*',s)+1,Length(s)-P