有一段数据的读取问题,老是编译出错,希望各位大虾帮忙,能新写最好,该我的也行!!
数据源为:
19.7 0.021
23.4 0.568
23.7 0.340
28.6 0.023
18.5 0.433 微冰
75.8 0.562 ..
37.5 0.321 ..
12.3 0.069 ..
我的程序为:
d_x1:= ;d_x2:= ;d_x3:= ;old_d_x:= ;
for j:=j to Length(Strline) do begin
if (Strline[j]<> ) then
k:=j;
break;
end;
end;
for j:=k to Length(Strline) do begin
if (Strline[j]= ) then
break;
end;
d_x1:=Copy(Strline,k,j-k);
for j:=j to Length(Strline) do begin
if (Strline[j]<> ) then begin
k:=j;
break;
end;
end;
for j:=k to Length(Strline) do begin
if (Strline[j]= ) then
break;
end;
d_x2:=Copy(Strline,k,j-k);
for j:=j to Length(Strline) do begin
if (Strline[j]<> ) then begin
k:=j;
break;
end;
end;
for j:=k to Length(Strline) do begin
if (Strline[j]= ) then
break;
end;
d_x3:=Copy(strline,k,j-k);
//处理最后的三列
//第一种情况,三列均存在
if (( Length(d_x1)>0) and (Length(d_x2)>0) and (Length(d_x3)>0)) then begin
if (d_x3<>") then begin
old_d_x:=d_x3;
end
else begin
d_x3:=old_d_x;
end;
end
//读取两列的情况
else if (( Length(d_x1)>0) and ( Length(d_x2)>0)) then begin
//处理读取的是第1,2列的情况
if (( d_x1[1] in [0..9]) and (d_x2[1] in [0..9])) then begin
d_x3:= ;
end
//处理读取的是第1,3列的情况
else if (StrToFloat(d_x1)>1.0) then begin
if (d_x2[1]=") then begin
d_x3:=old_d_x;
end
else begin
d_x3:=d_x2;
old_d_x:=d_x3;
end;
d_x2:=0;
end
//处理读取的是第2,3列的情况
else if ((StrToFloat(d_x1)<1.0) and (StrToFloat (d_x1)>0.0)) then begin
if (d_x2[1]=") then begin
d_x3:=old_d_x;
end
else begin
d_x3:=d_x2;
old_d_x:=d_x3;
end;
d_x2:=d_x1;
d_x1:=0;
end;
end
//处理只有一列的情况
else begin
if (d_x1[1] in [0..9]) then begin
if ((StrToFloat(d_x1)<1.0) and (StrToFloat(d_x1)>0.0)) then begin
d_x2:=d_x1;
d_x1:=0;
d_x3:= ;
end
else begin
d_x2:=0;
d_x3:= ;
end;
end
else begin
if (d_x1[1]=") then begin
d_x3:=old_d_x;
end
else begin
d_x3:=d_x1;
old_d_x:=d_x3;
end;
d_x1:=0;
d_x2:=0;
end;
end;
不会,up
d_x3<>" 是什么意思?不明白
另外建议你用pos函数,代码可以简化好多
编译报什么错?
最好改成这样d_x3<>
单步调试吧
太多了