请问这个问题怎么解决?出现提示 list index out of bounds(1)
wwy 2005-08-19 10:03:26 有一个文本文件格式如下:
kid rq xsje xsjf ljjf
-------- -------- -------------- -------------- ------------------------ -
00000015 20050814 168.53 168.53 1415.53 /
00000015 20050814 68.47 68.47 1484.0 /
00000015 20050814 88.0 176.0 1660.0 /
文件数据有3万多行。
当数据少的时候读入没问题,但是当一次读入三万多行的时候。数据入库了。
但是最后出现了个提示信息,就是 list index out of bounds(1),请教各位怎么解决?
附代码:
function SplitString(Const SourceString : String; SplitChar : PChar) : TStringList;
var
tmpString : String;
i : integer;
begin
Result := TStringList.Create;
tmpString:=SourceString;
i := Pos(SplitChar,SourceString);
while i<>0 do
begin
Result.Add(Copy(tmpString,0,i-1));
Delete(tmpString,1,i);
i := Pos(SplitChar,tmpString);
end;
Result.Add(tmpString);
end;
procedure TfrmMain.btnOutputClick(Sender: TObject);
var
slSplit : TStringList;
i,j : Integer;
sMain,sSQL, vsql : String;
begin
if edit1.Text = '' then
begin
showmessage('请选择文件!');
exit;
end;
if radiobutton1.Checked then
begin
if Application.MessageBox(Pchar('原来的数据将被删除,确定要导入数据吗?') ,'提示',MB_YesNo) = IDYes then
begin
adqmain.Close ;
adqmain.SQL.Clear ;
adqmain.SQL.Add('delete from userscardmes ');
adqmain.Prepared ;
adqmain.ExecSQL ;
slSplit := TStringList.Create;
for i := 2 to slMain.Count - 1 do //从文档中读取
begin
sMain := slMain.Strings[i];
slSplit := SplitString(sMain,'/');
sSQL := 'INSERT INTO userscardmes (kid,rq,xsje,xsjf,ljjf) VALUES ('''
+ slSplit.Strings[0] + ''','''
+ slSplit.Strings[1] + ''','''
+ slSplit.Strings[2] + ''','''
+ slSplit.Strings[3] + ''','''
+ slSplit.Strings[4] + ''')';
with adqMain do
begin
Close;
SQL.Clear;
SQL.Add(sSQL);
Prepared;
ExecSQL;
end;
谢谢!