全部博文(788)
分类:
2008-09-16 14:57:51
procedure ReadLn([ var F: Text; ] V1 [, V2, ...,Vn ]);
READLN把数据读上来后,怎么判断哪个是我要的数据呢,能说的详细点吗
我的做法可能比较笨(借助TStringList类和Pos、Copy函数)
procedure TForm1.Button1Click(Sender: TObject);
var
SList, SLtemp : TStringList;
I : integer;
S, sTemp : string;
begin
S := 'PLH (DDMMSS.SS) Clk ZTD (m) : ' ; //这是标志串,前面没有空格,如有,则要另加处理
SList := TStringList.Create; //创建两个StringList--SList和SLtemp
SLtemp := TStringList.Create; //
SList.LoadFromFile('c:\src.txt'); //把c:\src.txt的内容导入SList
for I := 0 to SList.Count-1 do
if Pos(S,SList[I]) > 0 then //如果一行中有标志串则做以下处理
begin
{ 把此行的标志串去掉后赋值给sTemp这个字符串 }
sTemp := StringReplace(SList[I],S,'',[rfReplaceAll]);
{ 把sTemp 串中的双空格替换为换行符,然后把sTemp赋值给字符串列表SLtemp }
SLtemp.Text := StringReplace(sTemp,' ',#10,[rfReplaceAll]);
{ 输出SLtemp 中前三个值到一个memo里 }
memo1.Lines.Add( SLtemp[0] + ',' + SLtemp[1] + ',' + SLtemp[2] );
end;
SLtemp.Free;//释放用过的两个字符串列表
SList.Free;
end;
注意,前提是你的文本数据要有一定的格式,如:三个数字串之间都需要是用两个空格做间隔。
另外,我假设你是把数据存放在了一个TXT文件中。
楼主测试时,如果失败,就从一些细节上找原因(如空格问题)
我的输出结果是:
385508.36127,-770358.37552,40.803
385508.34732,-770358.35977,41.236
385508.34119,-770358.34916,41.441
lihuasoft(学习低调做人) 谢谢了,你的方法可以实现。
分已送出,请查收。。
分已收到. 也谢谢楼主, 因为你是一个负责任的人. 虽然已暗下决心2007年不再抢分, 但仍然对似你这样及时结贴的人表示敬意