用TStringList 可以很方便的取出每行数据 var list1 :TStringList begin list1 ;=TStringList.create; list1.loadFrom(filename); ...
然后再取 第一个值
TStringList
但怎么取值呢,能说的详细吗,谢谢。
你可以单行提取,然后用 ' '做结束标志,单个提取啊
StrToFloat 能够识别科学计数法。
我刚接触DELPHI不太清楚,看帮助里没有写关于Tstringlist有提取一行中某个数据是方法,
weixiaohua(我爱Delphi) 你说用''作结束标志,怎么操作呢,能写段代码最好,可以学习一下。function GetValidStr3 (Str: string; var Dest: string; const Divider: array of Char): string;
const BUF_SIZE = 20480; //$7FFF; var Buf: array[0..BUF_SIZE] of char; BufCount, Count, SrcLen, I, ArrCount: Longint; Ch: char; label CATCH_DIV; begin Ch:=#0;//Jacky try SrcLen := Length(Str); BufCount := 0; Count := 1; if SrcLen >= BUF_SIZE-1 then begin Result := ''; Dest := ''; exit; end; if Str = '' then begin Dest := ''; Result := Str; exit; end; ArrCount := sizeof(Divider) div sizeof(char); while TRUE do begin if Count <= SrcLen then begin Ch := Str[Count]; for I:=0 to ArrCount- 1 do if Ch = Divider[I] then goto CATCH_DIV; end; if (Count > SrcLen) then begin CATCH_DIV: if (BufCount > 0) then begin if BufCount < BUF_SIZE-1 then begin Buf[BufCount] := #0; Dest := string (Buf); Result := Copy (Str, Count+1, SrcLen-Count); end; break; end else begin if (Count > SrcLen) then begin Dest := ''; Result := Copy (Str, Count+2, SrcLen-1); break; end; end; end else begin if BufCount < BUF_SIZE-1 then begin Buf[BufCount] := Ch; Inc (BufCount); end;// else //ShowMessage ('BUF_SIZE overflow !'); end; Inc (Count); end; except Dest := ''; Result := ''; end; end; 上面这个函数功能就是你需要的.使用方法如下 tStr := GetValidStr3(tStr, s18, [' ', #9]); tStr := GetValidStr3(tStr, s1C, [' ', #9]); tStr := GetValidStr3(tStr, s20, [' ', #9]); 提取出来在转换成数就行了.weixiaohua(我爱Delphi) 谢谢你的回复,但这个函数对于初期的我来说有点难度,看不明白,不知有没有相对简单一点的方法,要是没有我就放分结贴了,。
第一次来这里就看到这么多热心的人,很感谢大家,也感谢CSDN。。你不用管那个函数的具体实现.
假如你的数据在DataList中. DataList := TStringList.Create; DataList.LoadFromFile('X:\XX.txt'); for I := DataList.count - 1 do begin sLine := DataList.Strings[I]; sLine := GetValidStr3(sLine, str1, [' ', #9]); //假如第一行 str1 := 72800.000; //sLine := GetValidStr3(sLine, str1, [' ', #9]); //在执行一次 str1 := 38.91898908 你可以依此类推. StrToFloat(str1); //转换后就是你需要的数了. end;up
weixiaohua(我爱Delphi) 谢谢了,分已送出请查收。。