不怕麻烦用下面方法,除去了空格:
(我以前做过的,改了一下)
var str:string;
procedure TForm1.Button1Click(Sender: TObject);
var lst:Tstringlist;
lst1:Tstringlist;
i,j:integer;
sql:string;
begin
i:=0;
lst:=tstringlist.create;//如果文件不是很大(40M吧)就用这个,快点,如果太大用resun的文件一行一行读的方法
lst1:=tstringlist.create;
lst.LoadFromFile('1.txt');
for i:=0 to lst.Count-1 do begin
str:=lst.Strings;
lst1.Clear;
for j:=1 to 4 do begin
lst1.Append(getsubstr(str,' ',j));
end;
//这个时候当前行的数据已经分解开且存放在lst1中,存到你的库中即可
{ sql:='insert into list(name,l1,l2,l3) values('+#39+lst1[0]+#39+','+#39+lst1[1]+
#39+','+#39+lst1[2]+#39+','+#39+lst1[3]+#39+')';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sql);
adoquery1.ExecSQL;}
end;
lst.Free;
lst1.Free;
end;
//分解当前行
Function Tform1.GetSubStr(var aString:String;SepChar:String;id:integer):String;
var Mystr:String;
StrLen:Integer;
SepCharPos:Integer;
begin
StrLen:=0;
while strlen=0 do begin
SepCharPos:=Pos(SepChar,aString);//定位第一个(空格)的位置(在第几字节)
MyStr:=Copy(aString,1,SepCharPos-1);//从开始复制到第一个(空格)前的数据
Delete(aString,1,SepCharPos); //删除第一个(空格)及其以前的数据
if (id=4) and (astring[1]<>' ') then begin //如果是最后一数据只需删除前面的(空格)
mystr:=astring;
end;
StrLen:=Length(mystr);
end;
GetSubStr:=MyStr; //返回结果
end;
//我试过,没问题;