请问我将一个TStringList 每一行添加到数据库里,出现List index out of bounds(1)的错误,请问这是什么错误?(50分)

X

xhyph

Unregistered / Unconfirmed
GUEST, unregistred user!
我有个英语单词的文件
每一行的格式为'英语=中文'
一共有4000多行
用ADO+ACCSEE

str:=TStringList.Create;
temp:=TStringList.Create;
str.LoadFromFile('D:/word.txt');



for i:=0 to str.Count-1 do
begin
s:=str.Strings;
temp:=SplitString(s,'=');
//这个函数是将str的每一行以=为分界,分离出英语和中文到temp里
self.ADOQuery1.Insert;
self.ADOQuery1.FieldByName('No').AsInteger:=1+i;
self.ADOQuery1.FieldByName('Eng').AsString:=temp.Strings[0];
self.ADOQuery1.FieldByName('Cha').AsString:=temp.Strings[1];
self.ADOQuery1.Post;
temp.Clear;
end;
ShowMessage('Over');

但是通常加到1,2千个就报
List index out of bounds(1)的错误,请问这是什么错误?
 
看看你的文本文件有没有空行?
 
你的d:/word.txt在1,2千行中有一行不是 英文=中文 格式的!
有可能是没有=,也有可能是用了全角的=
 
每次出错的位置一样吗?每次使用的文件内容一样吗?
可以肯定,问题出在“s:=str.Strings;
self.ADOQuery1.FieldByName('Eng').AsString:=temp.Strings[0];
self.ADOQuery1.FieldByName('Cha').AsString:=temp.Strings[1];
”这三句的后半句上。你可以仔细查下是哪个位置出的错。
 
多人接受答案了。
 
不用说,你这样肯定有问题的
你先看看SplitString你是怎么写的,
如果遇到空行,他怎么处理?
还有,如果一行没有=,你怎么处理?
 
顶部