存入和读出分别这样执行的 //-------------以下是存入 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; //------ 那么我的问题怎么解决呢?
定义一个索引(这个索引不同于数据库的索引),是用于标记
第一个Tstringgrid形成的文件的起点,
第二个Tstringgrid形成的文件的起点,
第n个Tstringgrid形成的文件的起点,
当读的时侯用Seek()确定读的起点
>>现在已经能够实现一个Tstringgrid的写入和读入)
是如何操作的, 但正常, 你能實現這一步, 應該用
TFileStream來實現了!
用自定義的分隔符來分開不同行列,就可了!!
//-------------以下是存入
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;
//------
那么我的问题怎么解决呢?