您的位置:程序门 -> delphi -> 非技术区



关于txt文件创建的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于txt文件创建的问题[已结贴,结贴人:truelang]
发表于:2007-12-12 14:39:04 楼主
我想要在程序中实现这样的功能:
1、在d:下新建一个空的txt文件:dtest.txt
2、假如d:下有一个包含一些字符的文件:stest.txt,那么,我要把stest.txt中的内容复制到dtest.txt中
请问怎么样实现这个功能,谢谢!
先给50分,不够再加!
发表于:2007-12-12 15:09:281楼 得分:5

procedure   tform1.btn1click(sender:   tobject);
var
    f:   textfile;
begin
    //   有stest.txt则拷贝
    if   fileexists('d:\stest.txt')   then   begin
        copyfile('d:\stest.txt',   'd:\dtest.txt',   false);
        exit;
    end;
    //没有则创建新的
    assignfile(f,   'd:\dtest.txt');
    rewrite(f);
    closefile(f);
end;
发表于:2007-12-12 15:28:392楼 得分:1
直接copyfile
发表于:2007-12-13 00:05:063楼 得分:1
找下..

有则拷贝一份并更名即可。
没有就创建。

同一楼.
发表于:2007-12-13 00:51:174楼 得分:1
楼主是
“我要把stest.txt中的内容复制到dtest.txt中”
copyfile会覆盖已存在的文件啊
发表于:2007-12-13 09:08:465楼 得分:0
我只是想把stest的内容放到dtest里面,而不是复制整个文件,因为我的dtest格式是utf,而stest是ansi,这样复制整个文件,dtest的格式也变成ansi了,请问哪里有单单复制内容的函数???
发表于:2007-12-13 11:13:486楼 得分:1
你那个已经不是"简单"的内容copy
而是编码转换
自己用编码处理函数
发表于:2007-12-14 15:58:287楼 得分:1
我把ini檔裏的資料copy到txt可以實現;把txt檔裏的資料copy到txt亦能實現啊!
請問你說的utf和ansi是可編輯文件嗎?
发表于:2007-12-14 16:40:258楼 得分:5
var
dfile:   tstringlist;

    dfile   :=   tstringlist.create;
    try
        if   not   fileexists('d:\dtest.txt')   then
        begin
            dfile.savetofile('d:\dtest.txt');
            //新建一个空的文件
        end;
        if   fileexists('d:\stest.txt')   then
        begin
            dfile.loadfromfile('d:\stest.txt');
            dfile.savetofile('d:\dtest.txt');
        end;
    finally
        dfile.free;
    end;
这么简单抢分,有好多方法。
发表于:2007-12-14 20:45:539楼 得分:5
var
    savefile:string;
    newfile,oldfile:tfilestream;
begin
    savedialog.initialdir   :=extractfilepath(application.exename)+'conf\10001\';
    if   savedialog.EXECute   then
    begin
        savefile   :=savedialog.filename;
        try
            if   fileexists(savefile)   then
            begin
                if   application.messagebox('您输入的文件名已经存在,确定要覆盖吗?','提示',mb_yesno)=id_yes   then
                    copyfile(pchar(filename),pchar(savefile),false);//   false   覆盖原来已经存在的文件
            end   else
            begin
                oldfile:=tfilestream.create(filename,fmopenread);
                try
                    newfile:=tfilestream.create(savefile,fmopenwrite   or   fmcreate);
                    try
                        newfile.copyfrom(oldfile,oldfile.size);
                    finally
                        newfile.free;
                    end;
                finally
                    oldfile.free;
                end;
            end;
        except
            showmessage('保存失败!');
        end;
    end;

这是我以前做过的一个程序,实现的是另存为的功能:如果文件中没有要保存的文件名,就创建一个,如果有的话就把原来的文件覆盖掉。
发表于:2007-12-16 08:35:2110楼 得分:1
“我只是想把stest的内容放到dtest里面,而不是复制整个文件,因为我的dtest格式是utf,而stest是ansi,这样复制整个文件,dtest的格式也变成ansi了,请问哪里有单单复制内容的函数???”------------
请看清楚楼主的实际需求意图,谢谢!并请楼主回复我的问题“請問你說的utf和ansi是可編輯文件嗎?”
如果没有时间请直接mail给我   :jian_jiao@askey.com.tw
发表于:2007-12-17 16:21:1011楼 得分:29
-   -!-   -!-   -!-   -!-   -!-   -!-   -!我只看了标题   怎么中间又变了   狂晕
ansitoutf8   转换
utf8toansi  

var  
sfile,dfile:       tstrings;    

        dfile       :=       tstringlist.create;  
        sfile       :=       tstringlist.create;  
        try  
              if   fileexists('d:\dtest.txt')   then  
              begin  
                  dfile.loadfromfile('d:\dtest.txt');
                end;  
              if   fileexists('d:\stest.txt')       then  
              begin  
                  sfile.loadfromfile('d:\stest.txt');
                  if   ansitoutf8(sfile.text)   <>   ''   then     //ansitoutf8注意sfile.text如果不正确会返回空
                    begin  
                      sfile.text   :=   ansitoutf8(sfile.text);
                      dfile.addstrings(sfile);
                      dfile.savetofile('d:\dtest.txt');  
                  end;
                end;  
        finally  
                dfile.free;  
                sfile.free;  
        end;  
发表于:2007-12-20 12:18:5012楼 得分:0
非常感谢cydong0423给我提供了ansitoutf8这个函数以及相应解决方法,使我的问题得到解决。
由于本贴分数不多而答复人却不少,所以分给得少请你见谅。
(悄悄告诉你,你可以到
http://topic.csdn.net/u/20071210/10/199bb332-a112-493a-8049-3e7bab781450.html
去答复我的另一个相关贴子,我在那边给你多些分。)


快速检索

最新资讯
热门点击