谁可以教教我怎么 delphi 保存 组件 属性 到文件里呢?
谁可以教教我怎么 delphi 保存 组件 属性 到文件里呢?
需要的时候直接调用,就可以恢复出来,有人跟我说用流的方式保存之类,不过我不是很明白,希望会的人可以教教我,
我QQ,1294634972,加我更好啊,谢谢啦!

解决方案 »

  1.   

    WriteComponent
    ReadComponent
    帮助中就带例子
      

  2.   

    谢谢楼上的仁兄,我问的是
    WriteComponent
    ReadComponent 在哪?只找到一个Write Component Template,还不是我需要的,
    回归正题,,
    delphi 保存 组件 属性 到文件里呢?
    需要的时候直接调用,就可以恢复出来,有人跟我说用流的方式保存之类,不过我不是很明白,希望会的人可以教教我,
      

  3.   

    简单的,只要保存部分用户可能修改的属性,还是用ini吧
      

  4.   

    //存储过程
    procedure SaveToFile(fileName:TFileName; myComp: Array of TComponent; Count: DWORD);
    var
      Stream: TFileStream;
      ClassName: array[0..255] of Char;
      I,ClassNameLen: Integer;
    begin
      Stream := TFileStream.Create(Filename, fmCreate or fmShareExclusive);
      
      try
        {Count为保存数}
        Stream.Write(Count, SizeOf(Count));
        {开始保存 }
        for I := 0 to Count - 1 then
        begin
          ClassNameLen := Length(myComp[I].ClassName) + 1;
          StrPCopy(ClassName, myComp[I].ClassName);
          
          Stream.Write(ClassNameLen, SizeOf(ClassNameLen));
          Stream.Write(ClassName, ClassNameLen);
          Stream.WriteComponent(myComp[I]);
        end;
      finally
        Stream.Free;
      end;
    end;//读取过程
    procedure LoadFromFile(fileName:TFileName);
    var
      
      Count: DWORD;
      Stream: TFileStream;
      ClassName: array[0..255] of Char;
      I,ClassNameLen: Integer;
      
    begin
      Stream := TFileStream.Create(Filename, fmOpenRead or fmShareDenyWrite);
      try
        {读取保存数}
        Stream.Read(Count, SizeOf(Count)); 
        for I := 0 to Count - 1 then
        begin
          Stream.Read(ClassNameLen, SizeOf(ClassNameLen));
          Stream.Read(ClassName, ClassNameLen);
          if ClassName = 'AClass' then 
          begin
            AClass := TAClass.create(nil);
            Stream.ReadComponent(AClass);
          end
          else if ClassName = 'BClass' then 
          begin
            BClass := TBClass.create(nil);
            Stream.ReadComponent(BClass);
          end
          else if .. then
          ...
          end;
          
        end;
      finally
        Stream.Free;
      end;
    end;