怎样将不同Tstringgrid的内容通过Tfilestream写入一个文件中,并能够从这一个Tfilestream生成的文件分别读到相应的Tstringgrid?(现在已经能够实现一个Tstringgrid的写入和读入),拜托高手了

解决方案 »

  1.   

    自己定义结构头,实现一个Tstringgrid的写入和读入,就能实现n个
      

  2.   

    在你的自己定义结构形成的文件流中,
    定义一个索引(这个索引不同于数据库的索引),是用于标记
    第一个Tstringgrid形成的文件的起点,
    第二个Tstringgrid形成的文件的起点,
    第n个Tstringgrid形成的文件的起点,
    当读的时侯用Seek()确定读的起点
      

  3.   

    我不知你的
    >>现在已经能够实现一个Tstringgrid的写入和读入)
    是如何操作的, 但正常, 你能實現這一步, 應該用
    TFileStream來實現了!
    用自定義的分隔符來分開不同行列,就可了!!
      

  4.   

    存入和读出分别这样执行的
    //-------------以下是存入
    procedure TForm1.BitBtn2Click(Sender: TObject);
    var st:TFileStream;
        i,len:integer;
    begin
        st:=TFileStream.Create('test.bin',fmcreate);
        with StringGrid1 do
        begin
          st.Write(RowCount,sizeof(RowCount));   
          st.Write(ColCount,sizeof(ColCount));
          for i:=0 to RowCount-1 do
          begin
            len:=Length(Rows[i].Text);
            st.Write(len,sizeof(len));
            st.Write(Rows[i].Text[1],len);
          end;
        end;
        st.Free;end;
    ///----------------------以下是读出
    procedure TForm1.BitBtn3Click(Sender: TObject);
    var st:TFileStream;
        i,len:integer;
        S:string; ro,co:integer;
    begin
        st:=TFileStream.Create('test.bin',fmOpenRead);
        with StringGrid1 do
        begin
          st.Read(ro,sizeof(ro));
          st.Read(co,sizeof(co));
          RowCount:=ro;
          ColCount:=co;
          for i:=0 to RowCount-1 do
          begin
            st.Read(len,sizeof(len));
            Setlength(S,len);
            st.Read(S[1],len);
            Rows[i].Text:=S;
          end;
        end;
        st.Free;
    end;
    //------
    那么我的问题怎么解决呢?
      

  5.   

    在写入文件时询问用户,不用固定的文件名。不同的stringGrid用不同的文件名。
      

  6.   

    呵呵,但是我想将这几个Tstringgrid1的内容写到一个文件里面的,不是用户决定的