W
warket
Unregistered / Unconfirmed
GUEST, unregistred user!
我将一个文本文件读入,然后通过splitstring函数分割出来放到Tstringgrid里面,我看程序应该没有什么错误,但是总是出现list index out bounds(0)错误,不知道什么原因。
function SplitString(const Source,ch:string):TStringList;
var
temp:string;
i:Integer;
begin
Result:=TStringList.Create;
//如果是空自符串则返回空列表
if Source=''
then exit;
temp:=Source;
i:=pos(ch,Source);
while i<>0 do
begin
Result.add(copy(temp,0,i-1));
Delete(temp,1,i);
i:=pos(ch,temp);
end;
Result.add(temp);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
f:textfile;
s:string;
i:integer;
temps:TStringList;
begin
//*****读取初始化文件,包括邮件接收人,发送人的邮件地址和邮件帐号密码
//*****************************************
//初始化表格
sg1.Cells[0,0]:='序号';
sg1.ColWidths[0]:=30;
sg1.Cells[1,0]:='主题';
sg1.ColWidths[1]:=160;
sg1.Cells[2,0]:='文件名';
sg1.ColWidths[2]:=460;
sg1.Cells[3,0]:='发送时间';
sg1.ColWidths[3]:=93;
sg1.Cells[4,0]:='完成状态';
i:=0;
temps:=TStringList.Create;
temps.Sort;
assignfile(f, ExtractFilePath(Application.ExeName )+'sendtask.txt');
reset(f);
while not eof(f) do
begin
i:=i+1;
Readln(F, S);
temps:= SplitString(s,';');
if sg1.RowCount<i then
sg1.RowCount:=i;
sg1.Cells[0,i]:=' '+inttostr(i);
sg1.Cells[1,i]:=temps[0];
sg1.Cells[2,i]:=temps[2];
sg1.Cells[3,i]:=temps[2];
//sg1.Cells[4,i]:=temps[3];
end;
temps.Free;
CloseFile(F);
end;
function SplitString(const Source,ch:string):TStringList;
var
temp:string;
i:Integer;
begin
Result:=TStringList.Create;
//如果是空自符串则返回空列表
if Source=''
then exit;
temp:=Source;
i:=pos(ch,Source);
while i<>0 do
begin
Result.add(copy(temp,0,i-1));
Delete(temp,1,i);
i:=pos(ch,temp);
end;
Result.add(temp);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
f:textfile;
s:string;
i:integer;
temps:TStringList;
begin
//*****读取初始化文件,包括邮件接收人,发送人的邮件地址和邮件帐号密码
//*****************************************
//初始化表格
sg1.Cells[0,0]:='序号';
sg1.ColWidths[0]:=30;
sg1.Cells[1,0]:='主题';
sg1.ColWidths[1]:=160;
sg1.Cells[2,0]:='文件名';
sg1.ColWidths[2]:=460;
sg1.Cells[3,0]:='发送时间';
sg1.ColWidths[3]:=93;
sg1.Cells[4,0]:='完成状态';
i:=0;
temps:=TStringList.Create;
temps.Sort;
assignfile(f, ExtractFilePath(Application.ExeName )+'sendtask.txt');
reset(f);
while not eof(f) do
begin
i:=i+1;
Readln(F, S);
temps:= SplitString(s,';');
if sg1.RowCount<i then
sg1.RowCount:=i;
sg1.Cells[0,i]:=' '+inttostr(i);
sg1.Cells[1,i]:=temps[0];
sg1.Cells[2,i]:=temps[2];
sg1.Cells[3,i]:=temps[2];
//sg1.Cells[4,i]:=temps[3];
end;
temps.Free;
CloseFile(F);
end;