Delphi中可以对DFM文件进行流操作,现在要解决以下问题:
1)不用delphi自动生成的窗体DFM保存信息,而是自己建立一个DFM文件,请问怎样建立,并对自己建立的DFM文件进行流操作,用来保存信息。
即:重载过程:procedure DefineProperties(Filer: TFiler); override;
怎样重载才能实现对自己建立的DFM文件进行访问,是不是只能访问Delphi默认的DFM文件?
2)用于保存大量的数据信息,到底是用*.ini文件好,还是用.dfm文件好呢?请兄弟们指教,一定给分,决不失言!谢谢

解决方案 »

  1.   

    >>2)用于保存大量的数据信息,到底是用*.ini文件好,还是用.dfm文件好呢?
    你在运行时, 使用dfm并不能带来什么好处, 除非你连delphi的编译器都带了!!>>1)不用delphi自动生成的窗体DFM保存信息,而是自己建立一个DFM文件,请问怎样建立,并对自己建立的DFM文件进行流操作,用来保存信息。我也在研究中!!还没有进展!!
      

  2.   

    那就是说用*.ini文件好了。
    那第一个问题呢?有没有知道的?
    自己顶一下,上去!
      

  3.   

    (*//
    标题:处理窗体代码
    说明:既dfm格式;本函数来源于Delphi帮助
    设计:Zswang
    日期:2002-01-25
    支持:[email protected]
    //*)///////Begin Source
    function ComponentToString(Component: TComponent): string;
    var
      BinStream: TMemoryStream;
      StrStream: TStringStream;
      s: string;
    begin
      BinStream := TMemoryStream.Create;
      try
        StrStream := TStringStream.Create(s);
        try
          BinStream.WriteComponent(Component);
          BinStream.Seek(0, soFromBeginning);
          ObjectBinaryToText(BinStream, StrStream);
          StrStream.Seek(0, soFromBeginning);
          Result := StrStream.DataString;
        finally
          StrStream.Free;
        end;
      finally
        BinStream.Free
      end;
    end; { ComponentToString }function StringToComponent(Value: string; Instance: TComponent): TComponent;
    //如果元件是嵌套形式则必须注册子元件类
    //参考RegisterClasses();UnRegisterClasses()
    var
      StrStream: TStringStream;
      BinStream: TMemoryStream;
    begin
      StrStream := TStringStream.Create(Value);
      try
        BinStream := TMemoryStream.Create;
        try
          ObjectTextToBinary(StrStream, BinStream);
          BinStream.Seek(0, soFromBeginning);
          Result := BinStream.ReadComponent(Instance);
        finally
          BinStream.Free;
        end;
      finally
        StrStream.Free;
      end;
    end; { StringToComponent }
    ///////End Source///////Begin Demo
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Memo1.Text := ComponentToString(Edit1);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      StringToComponent(Memo1.Text, Edit1);
    end;
    ///////End Demo
      

  4.   

    试一下:
    Memo1.Lines.LoadFromFile('一个DFM文件');
    怎么样,就是文本文件嘛再试一下:
    把Memo1中的内容修改一下,然后
    Memo1.Lines.SaveToFile('同一个或另一个DFM文件');
    只要你修改得当,在Delphi里绝对可以正常显示DFM就是文本文件嘛