delphi 生成txt文件问题

procedureTForm1.Button1Click(Sender:TObject);varstrlist:TStringList;beginstrlist:=TSt... procedure TForm1.Button1Click(Sender: TObject);
var
strlist:TStringList;
begin

strlist:=TStringList.Create;
strlist.Add(memo1.Text);
strlist.SaveToFile(ExtractFilePath(Paramstr(0))+'newFile\'+IntToStr(i) + '.txt');
i:=i+1;
strlist.Free;
end;
i 是全局变量,我的思路是 在newfile文件夹下生成名字为1至无穷大的txt文件,目前我启动程序,可以生成从1.txt开始的文件,假如我生成到了5.txt ,然后关闭程序,再重新打开的时候,又要从1.txt开始计数,只到点击6次后,才又开始出现6.txt。我想实现生成5.txt后,关闭再重新打开程序时,鼠标点击一下就又开始从6.txt开始建立文件,而不是点击6次 才出现。(或者说再次打开程序时,能计算出最后一个文件的值,然后从最后一个值后+1继续生成新的文件) 请高手指点!
展开
 我来答
ayi033
2013-12-09 · TA获得超过144个赞
知道小有建树答主
回答量:317
采纳率:100%
帮助的人:104万
展开全部
//这个你不用想那么复杂啊,创建文件之前判断一下就可以了,比如你现在i是1,判断一下1.txt存不存在,存在就i+1;再判断。直到i = n,n.txt不存在,就创建。
var  
  strlist:TStringList;
  fileName:string;//文件名
begin 
  strlist:=TStringList.Create;  strlist.Add(memo1.Text);
  filename :=ExtractFilePath(Paramstr(0))+'newFile\'+IntToStr(i) + '.txt';
  while fileExists(fileName) do //循环判断文件是否存在,存在就+1,不存在就保存
  begin
    i:= i+1;
    filename :=ExtractFilePath(Paramstr(0))+'newFile\'+IntToStr(i)+'.txt';
  end; 
  strlist.SaveToFile(FileName);  
  i:=i+1; 
  strlist.Free;
end;

 //这不是什么技术问题,只是编程思路问题,用楼上保存文件也可以实现

windblast
2013-12-08 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13622
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
全局变量是只有程序过程中才会起作用,当你关闭程序,这个全局变量的值就没有了,再重新运行程序仍然会按你原先的值重新初始化,因此,得到你上面所说的程序运行是正常的。

如果想要“从最后一个值后+1继续生成新的文件”,那么,你需要在程序运行后,首先要将 i 的值初始化为最后一次的值,这个值通常是独立于程序本身保存(比如,在某个txt文件、ini文件、数据库中、甚至注册表等等)。

当你关闭程序之前,将最后的值保存起来。当你运行程序后,将最后的值取出来。
更多追问追答
追问
您说的挺有道理的,我比较菜,能说说实现您的思路的方法代码吗? 比如那个 关闭程序之前,将最后的值保存起来。当你运行程序后,将最后的值取出来
追答
1. 在Form的 OnShow 或是 OnCreate 事件中编写代码,比如,从INI文件中读取最后的值,再将这个值赋给 i。

2. 在Form的 OnClose 事件中编写代码,将 i 的值保存到ini文件中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式