算你问对了,我正好做过同样的工作,以下是原代码,希望对你有用
//---打开文件
procedure TForm1.Open_BtnClick(Sender: TObject);
var
h,j,k,Num,StrLen,SepCharPos:integer;
SepChar,aString,MyStr:String; //SepChar是Memo中数字与数字之间的分隔符,可以是逗号、分号、空格或任意字符
begin
if OpenDialog1.Execute then
Begin
OpenedFileName:=OpenDialog1.FileName ;
Memo1.Lines.LoadFromFile(OpenDialog1.FileName );
SepChar:=','; //我这里用逗号作分隔符,如*.csv文件就用此格式
StringGrid1.RowCount :=Memo1.Lines.Count;
StringGrid1.FixedRows :=1;
//StringGrid1.DefaultRowHeight :=StrToInt(Edit1.Text)*2;
//StringGrid1.DefaultColWidth :=StrToInt(Edit2.Text)*2;
//Memo1.Lines.Clear;
for h:=0 to Memo1.Lines.Count-1 do
begin
//ProgressBar1.Max :=RichEdit1.Lines.Count-1;
aString:=Memo1.Lines.Strings[h];
StrLen:=Length(aString);
Num:=0;
for j:=0 to StrLen do //计算字符串中有多少个分隔符
begin
if Copy(aString,j,1)=SepChar then
Num:=Num+1
end;
for k:=1 to Num+1 do //分别取出被分隔符分开的字符串
begin
SepCharPos:=Pos(SepChar,aString); //计算第一个分隔符在字符串中的位置
if SepCharPos=0 then //字符串中没有分隔符或分隔符以前的字符串已被处理
begin
MyStr:=aString;
StringGrid1.ColCount:=k;
StringGrid1.Cells[(k-1),h]:=MyStr;
end
else //字符串中有分隔符
begin
MyStr:=Copy(aString,1,SepCharPos-1); //取出第一个分隔符之前的字符串
StringGrid1.Cells[(k-1),h]:=MyStr;
Delete(aString,1,SepCharPos); //删除第一个分隔符和第一个分隔符之前的字符串
end
end;
//ProgressBar1.Position :=h; //显示进度
end;
i:= StringGrid1.RowCount;
RecNo.Caption :=IntToStr(i-1); //这是一个Label,显示总共打开了多少条记录
end;
end;