全部博文(788)
分类:
2008-11-18 14:50:22
用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) 谢谢了,分已送出请查收。。