Sorry!可能是我表达得不够清楚。
我是想:比如*.doc只能用Word才能打开。
我想要我的文件只能有我自己的程序操作。

解决方案 »

  1.   

    我用UltraEdit甚至于写字板都可以把*.doc打开,
    只不过是乱嘛而已!
      

  2.   

    没有打不开的程序。。楼上说的对。除非自己编写程序格式。
    其实你也可以使用别的方法。呵呵。例如有的人把。TXT的文件改成别的扩展名。例如。AOR要打开的时候自然找不到关联。然后你在到注册表中添加相应的文件关联。不就有了属于你自己的格式了。。
      

  3.   

    我想moqiyayan(万俟雅言)的意思是自定义文件格式,然后与自己的应用程序建立关联…
      

  4.   

    自己写注册表就行了。
    如果不会用程序代码编程操作注册表,也可以找着regedit导出的注册表格式按系统已存在的关联文件后缀写一个。当安装的时候执行这个注册表文件就Okey了。
      

  5.   

    其实很简单,大家都可以去试一下。
    你先定义一个文件,它的类型是byte的就可以(不要是其它的哦),
    定义的方法就是
    var f:file of byte;
    然后你就可以定义自己的文件结构,我们可以假设一个结构作为文件的头结构,
    type
      filehead = packed record
         version:integer;
         type:char;
      end;
    定义完以后设个变量
    var myhead:filehead;
    然后你就可以操作你的文件了,我再继续举简单的方法:
    begin
      assignfile(f,'c:\xx.qq');//暂时定义文件的后缀为qq
      reset(f);//你也可以rewrite(f),这个是新建文件时用的
    {
      如果你是新建文件,你可以这样
      rewrite(f);
      myhead.version:=1;
      myhead.type:='q';
      blockwrite(f,myhead,sizeof(myhead));//这是块写方法,写入你的文件头
    }
      blockread(f,myhead,sizeof(myhead));//这是块读文件,用这个方法可以读取文件头
      ......//这里就是你的操作了,如果符合文件头的结构,你可以读出文件头里的内容的
    end;
        
    建立上面方法的思路就是自己建立一个文件头,只有知道结构的人才能够解读这个文件头,因为文件的格式是字节,所以别人用任何编辑器看到的只能够是乱码,而不可能是你文件的内容,如果有什么不清楚,你可以参考一下国外一些关于文件格式的网站,即使是讨论图像文件格式的网站也能够让你非常清楚如何制作自己格式的文件。当然,图方便的方法就是在这里贴帖子。
      

  6.   

    http://www.csdn.net/expert/Topic/456/456186.shtm
      

  7.   

    示例:Type  //文件内容申明
      TFileContent=Record
        Size:Integer;
        a1:string[20];
        a2:string[50];
        b1:Integer;
        b2:Word;
      End;var
      FileName:TFileName;
      FileContent:TFileContent;
      FileHandle:THandle;
      
      //将文件内容填好
      With FileContent do
        Size:=0;
        a1:='asdfsad';
        ...
      End;
      
      FileName:='d:\temp\a123.tmp';
      if FileExists(FileName) then
        Begin
          FileHandle:=FileOpen(FileName, fmOpenWrite)
        End
      else
        Begin
          FileHandle:=FileCreate(FileName);
        End;
      FileWrite(FileHandle,FileContent,SizeOf(TFileContent));
      FileClose(FileHandle);