请问这个问题怎么解决?出现提示 list index out of bounds(1)

wwy wwy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有一个文本文件格式如下:

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;

谢谢!


...全文
评论 2
收藏 已收藏
分享
返回顶部
wwy
数据库相关 2,508 成员 88,437 内容