怎样保存文件???

huhaomcu 2013-10-24 09:59:23
我的窗体上有一个TStringGrid控件,我想在ToolBar上放一个ToolButton按钮此按钮的功能就是保存TStringGrid控件中的所有内容(4列)。我放了一个TSaveDialog对话框,后面的怎么做我就不知道了???各位大神,然后要怎么做咧!!!
...全文
117 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
huhaomcu 2013-10-24
  • 打赏
  • 举报
回复
引用 2 楼 twtynk1 的回复:
先要搞清你是想保存到数据库还是保存成文件?保存成文件就需要TSaveDialog,如果保存到数据库,绑定数据源后,提交保存,会自动保存到数据库


我只是想单独的保存为一个.txt文件,我这样做的
StringGrid1.Cols[1].SaveToFile('log');
SaveDialog1.Execute;

但是这样做后确实可以生成log文件(没有后缀),但当我点击保存按钮时保存对话框中的文件名不能绑定我的这个log文件。本来目的是想要生成log文件后,再通过TSaveDialog保存到其它目录下,并跟它加上后缀名的。求指教啊!
Alex-16888 2013-10-24
  • 打赏
  • 举报
回复
先要搞清你是想保存到数据库还是保存成文件?保存成文件就需要TSaveDialog,如果保存到数据库,绑定数据源后,提交保存,会自动保存到数据库
haitao 2013-10-24
  • 打赏
  • 举报
回复
2维表格的内容,两重循环来保存 什么格式,取决于格子内容里有没有特殊字符 如果没有回车和tab,直接每行对应表格一行,每格内容以tab分隔
huhaomcu 2013-10-24
  • 打赏
  • 举报
回复
引用 5 楼 twtynk1 的回复:

var
  i:integer;
  LogFile:TStringlist;
  sRow:string;
begin
  LogFile := TStringlist.Create;
  SaveDialog1.Filter := '日志文件(*.log)|*.log';
  if SaveDialog1.Execute then
  begin
    for i := 1 to StringGrid1.RowCount  do
    BEGIN
      sRow := '';
      sRow := StringGrid1.Cells[i,1] + ';' +StringGrid1.Cells[i,2] + ';' + StringGrid1.Cells[i,3] +';'+ StringGrid1.Cells[i,4];
      LogFile.Add(sRow);
    END;
    LogFile.SaveToFile(SaveDialog1.FileName);
  end;

end;
曙光啊!!!!谢谢您,小弟受教了!!!加分
LastAvengers 2013-10-24
  • 打赏
  • 举报
回复
可以先设定SaveDialog1.FileName为你想要的默认值。
Alex-16888 2013-10-24
  • 打赏
  • 举报
回复
另外一种方法

var
  fl:TextFile;
  K, i:integer;
  sRow:string;
begin
  SaveDialog1.Filter := '日志文件(*.log)|*.log';
  if SaveDialog1.Execute then
  begin
    if not FileExists(SaveDialog1.FileName) then
    begin
      K := FileCreate(SaveDialog1.FileName);
      if K > 0 then
      begin
        FileClose(K);
        AssignFile(fl,SaveDialog1.FileName);
        for i := 1 to StringGrid1.RowCount do
        begin
          Append(fl);
          sRow := StringGrid1.Cells[i,1] + ';' +StringGrid1.Cells[i,2] + ';' + StringGrid1.Cells[i,3] +';'+ StringGrid1.Cells[i,4];
          WriteLn(fl,sRow);
        end;
        Closefile(fl);
      end;
    end else
    begin
      AssignFile(fl,SaveDialog1.FileName);
      for i := 1 to StringGrid1.RowCount do
      begin
        Append(fl);
        sRow := StringGrid1.Cells[i,1] + ';' +StringGrid1.Cells[i,2] + ';' + StringGrid1.Cells[i,3] +';'+ StringGrid1.Cells[i,4];
        WriteLn(fl,sRow);
      end;
      Closefile(fl);
    end;
  end;
end;
Alex-16888 2013-10-24
  • 打赏
  • 举报
回复

var
  i:integer;
  LogFile:TStringlist;
  sRow:string;
begin
  LogFile := TStringlist.Create;
  SaveDialog1.Filter := '日志文件(*.log)|*.log';
  if SaveDialog1.Execute then
  begin
    for i := 1 to StringGrid1.RowCount  do
    BEGIN
      sRow := '';
      sRow := StringGrid1.Cells[i,1] + ';' +StringGrid1.Cells[i,2] + ';' + StringGrid1.Cells[i,3] +';'+ StringGrid1.Cells[i,4];
      LogFile.Add(sRow);
    END;
    LogFile.SaveToFile(SaveDialog1.FileName);
  end;

end;
huhaomcu 2013-10-24
  • 打赏
  • 举报
回复
现在可以保存文件了,但还有一个功能我不知道怎么实现,就是我想在保存文件时就已经自动生成默认的文件名了,而不用人为的去输入!!!

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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