delphi如何取到循环的次数

在进行excel表格导入的时候使用了循环,但是循环的次数是不确定的,我想得到循环的次数,好来判断我下一次循环的开始行,不知道怎么能得到这个次数呢!大家帮帮我!谢谢啦!... 在进行excel表格导入的时候使用了循环,但是循环的次数是不确定的,我想得到循环的次数,好来判断我下一次循环的开始行,不知道怎么能得到这个次数呢!大家帮帮我!谢谢啦! 展开
 我来答
百度网友c161d43c7
2013-11-02 · TA获得超过1776个赞
知道小有建树答主
回答量:1227
采纳率:69%
帮助的人:286万
展开全部
自己加个计数器不行吗?
在循环开头定一个变量,count :=0 ,在循环中间count := count + 1,循环结束后count就是下一次循环开始的行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-11-02
展开全部
procedure TfrmBaseSet.ToExcel(FormName: string; DBG: TDBGridEh; IdenHad: Boolean);
//*************************以下全部是定义***************************//
var
i: integer;
Col , row: word;
ABookMark: TBookMark;
aFileStream: TFileStream;
FileName: string;
procedure incColRow; //增加行列号
begin
if Col = DBG.DataSource.DataSet.FieldCount - 1 then
begin
Inc(Row);
Col :=0;
end
else
Inc(Col);
end;
procedure WriteStringCell(AValue: string);//写字符串数据
var
L: Word;
begin
L := Length(AValue);
arXlsString[1] := 8 + L;
arXlsString[2] := Row;
arXlsString[3] := Col;
arXlsString[5] := L;
aFileStream.WriteBuffer(arXlsString, SizeOf (arXlsString));
aFileStream.WriteBuffer(Pointer(AValue)^, L);
IncColRow;
end;
procedure WriteIntegerCell(AValue: integer);//写整数
var
V: Integer;
begin
arXlsInteger[2] := Row;
arXlsInteger[3] := Col;
aFileStream.WriteBuffer(arXlsInteger, SizeOf(arXlsInteger));
V := (AValue shl 2) or 2;
aFileStream.WriteBuffer(V, 4);
IncColRow;
end;
procedure WriteFloatCell(AValue: double );//写浮点数
begin
arXlsNumber[2] := Row;
arXlsNumber[3] := Col;
aFileStream.WriteBuffer(arXlsNumber, SizeOf(arXlsNumber));
aFileStream.WriteBuffer(AValue, 8);
IncColRow;
end;
//*************************以上全部是定义***************************//
begin
if (DBG.DataSource.DataSet.Active = False) or (DBG.DataSource.DataSet.RecordCount = 0) then
exit;
dlgSave_Main.FileName:=Copy(ExtractFilePath(ParamStr(0)),1,3)+FormName+FormatDateTime('yyyy-mm-dd',Now());
FileName:='Error';
dlgSave_Main.Filter:='Excel2003|*.xls';
if dlgSave_Main.Execute then
begin
FileName:= dlgSave_Main.FileName+'.xls';
aFileStream := TFileStream.Create(FileName, fmCreate);//写文件头 
end;
if FileName='Error' then Exit;
Try
aFileStream.WriteBuffer(arXlsBegin, SizeOf(arXlsBegin));//写列头
Col := 0;
Row := 0;
for i := 0 to DBG.Columns.Count-1 do
WriteStringCell(DBG.Columns[i].Title.Caption);
if IdenHad then
WriteStringCell(' ');
DBG.DataSource.DataSet.DisableControls;
ABookMark := DBG.DataSource.DataSet.GetBookmark;
DBG.DataSource.DataSet.First ;
while not DBG.DataSource.DataSet.Eof do//写数据集中的数据
begin
for i := 0 to DBG.Columns.Count-1 do
begin
if Col>DBG.Columns.Count-1 then
begin
Row :=Row+1;
Col :=0;
end;
case DBG.Columns[i].Field.DataType of
ftSmallint, ftInteger, ftWord, ftAutoInc, ftBytes : WriteIntegerCell(DBG.Columns[i].Field.AsInteger);
ftFloat, ftCurrency, ftBCD : WriteFloatCell(DBG.Columns[i].Field.AsFloat)
else
WriteStringCell(DBG.Columns[i].Field.AsString);
end;
end;
DBG.DataSource.DataSet.Next;
Application.ProcessMessages;
end;
AFileStream.WriteBuffer(arXlsEnd, SizeOf(arXlsEnd));//写文件尾
if DBG.DataSource.DataSet.BookmarkValid(ABookMark) then
DBG.DataSource.DataSet.GotoBookmark(ABookMark);
frmBase.ShowInfoBox(ToExcel_LangList[3]);
AFileStream.Free;
DBG.DataSource.DataSet.EnableControls;
ToExcel_LangList.Free;
except
exit;
end;
end;

就像这个导出 Excel代码一样应该有个Row变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
下扬州啊
2013-11-02 · TA获得超过2519个赞
知道大有可为答主
回答量:4870
采纳率:40%
帮助的人:2132万
展开全部
定义一个变量i,integer类型,每次循环i加1就知道了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式