求助一个简单的问题!

没有昵称哦 2014-07-28 11:27:53
我需要从一个表格里导出数据到文本。表格有20行, 一行5列
表格图片:

导到文本里是七个为一行,大于七个就换行。如果最后不够七个,就剩下的为一行
比如总共有100个数据(并不是每次都有100个数据,如果数量为0不导出号码),导出14行(共98个)剩下的两个就单独做为了一行
procedure TForm1.Button2Click(Sender: TObject);
var
i, j, k: Integer;
SNum: string;
Num: string;
lst:TStrings;
begin
lst:=TStringList.Create;
for i := 0 to 20 do
begin
for j := 0 to 5 do
begin
Num := 'AAAA='+IntToStr(i)+IntToStr(J)+' ';
SNum := num + Snum;
k := i * 4 + j;
if (K mod 7 = 0) and (K <> 0) then
begin
// ShowMessage(IntToStr(i) + ' : ' + IntToStr(j) + ' : ' + IntToStr(k));
//Txtmem.Lines.Add(SNum);
lst.Add(SNum);
SNum:='';
end;
if AAAAAAA then
begin
剩余的不够七个的添加到Lst里为一行
end;
end;

end;
//Txtmem.Lines.SaveToFile('D:\1.txt');
lst.SaveToFile('D:\2.txt');
end;

应该怎么写这个判断比较准确? if (( K mod 7)=0) and (K>0) thenp 这样测试了一下有问题,导出的数据不是每行七个, if AAAAAAA then 这里的判断要怎么写?》
...全文
167 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamduo 2014-07-30
  • 打赏
  • 举报
回复
别贪心。 想着一个类处理所有逻辑。 分步处理。 1. 把Excel 里的内容,全都保存到一个 TList 或者 TStringList 中。 2. 直接用一个 int 变量,取出一个增加1. 满 7 个的时候,加回车。
  • 打赏
  • 举报
回复
procedure TForm1.Button2Click(Sender: TObject); var i, j, k: Integer; SNum: string; Num: string; lst:TStrings; tmpPath: string; begin lst:=TStringList.Create; k:= 0; //初始化k for i := 0 to 20 do begin for j := 0 to 5 do begin Num := 'AAAA='+IntToStr(i)+IntToStr(J)+' '; SNum := num + Snum; Inc(k); //k:=k+1; if (K mod 7 = 0) and (K <> 0) then begin lst.Add(SNum); SNum:=''; end; end; end; if Trim(SNum)<>'' then lst.Add(SNum); //写到当前目录 tmpPath:= ExtractFilePath(ParamStr(0)); lst.SaveToFile(tmpPath + '\2.txt'); end; 前面没仔细看代码。
haitao 2014-07-29
  • 打赏
  • 举报
回复
引用 5 楼 sz_haitao 的回复:
AAAAAA写: SNum=''
哦,反了,是 SNum<>''
haitao 2014-07-29
  • 打赏
  • 举报
回复
AAAAAA写: SNum=''
  • 打赏
  • 举报
回复
procedure TForm1.Button2Click(Sender: TObject); var i, j, k: Integer; SNum: string; Num: string; lst:TStrings; begin lst:=TStringList.Create; for i := 0 to 20 do begin for j := 0 to 5 do begin Num := 'AAAA='+IntToStr(i)+IntToStr(J)+' '; SNum := num + Snum; k := i * 4 + j; if (K mod 7 = 0) and (K <> 0) then begin // ShowMessage(IntToStr(i) + ' : ' + IntToStr(j) + ' : ' + IntToStr(k)); //Txtmem.Lines.Add(SNum); lst.Add(SNum); SNum:=''; end; {注释掉 if AAAAAAA then begin 剩余的不够七个的添加到Lst里为一行 end; } end; end; //跳出循环后,如果SNum不为空字符串的话, //就是最后不足7个的数据,在这里加入Lst中 if Trim(SNum) <> '' then lst.Add(SNum); //Txtmem.Lines.SaveToFile('D:\1.txt'); lst.SaveToFile('D:\2.txt'); 擦,少了个判断。郁闷。 end;
  • 打赏
  • 举报
回复
procedure TForm1.Button2Click(Sender: TObject); var i, j, k: Integer; SNum: string; Num: string; lst:TStrings; begin lst:=TStringList.Create; for i := 0 to 20 do begin for j := 0 to 5 do begin Num := 'AAAA='+IntToStr(i)+IntToStr(J)+' '; SNum := num + Snum; k := i * 4 + j; if (K mod 7 = 0) and (K <> 0) then begin // ShowMessage(IntToStr(i) + ' : ' + IntToStr(j) + ' : ' + IntToStr(k)); //Txtmem.Lines.Add(SNum); lst.Add(SNum); SNum:=''; end; {注释掉 if AAAAAAA then begin 剩余的不够七个的添加到Lst里为一行 end; } end; end; //跳出循环后,如果SNum不为空字符串的话, //就是最后不足7个的数据,在这里加入Lst中 lst.Add(SNum); //Txtmem.Lines.SaveToFile('D:\1.txt'); lst.SaveToFile('D:\2.txt'); end;
没有昵称哦 2014-07-29
  • 打赏
  • 举报
回复
这个版块没人吗??
没有昵称哦 2014-07-29
  • 打赏
  • 举报
回复
自己项一下,别沉了 !
道玄希言 2014-07-29
  • 打赏
  • 举报
回复


procedure TForm1.btnArrayHHClick(Sender: TObject);
var
  i, j, k, s: Integer;
  SNum: string;
  Num: string;
  lst:TStrings;
begin
  lst:=TStringList.Create;
  s := 20 * 5 ;
  k := 0 ;
  for i := 0 to 19 do                //20行
  begin
    for j := 1 to 5 do              //5列
    begin
      Num := 'AAAA='+IntToStr(i)+IntToStr(J)+'   ';
      SNum := Snum + num;
      k := (i*5) + j ;
      if K > 0 then
      begin
        if (K mod 7 = 0) then
        begin
          lst.Add(SNum);
          SNum := '' ;
        end
        else
        begin
          if (k = s) then
          begin
            lst.Add(SNum);
          end
        end;
      end;
    end;
  end;
  lst.SaveToFile('D:\2.txt');
end;

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧