Stirnggrid를 이용해서 간단한 데이타를 출력해야 하는데
생성되는 데이타를 저장하고 다시 읽어오는 방법을 모르겠습니다...
여기 게시판을 찾아보니까 10page에 달하는 분량이 나오더군요..
조금이라도 관계가 되는 것들은 다 읽어 보았지만 결과는 흐흑....ㅠ.ㅠ
DB를 쓰면 용량이 넘 커질 것 같아서 쓰지 못하겠구, 꼭 Stringgrid를 이용해야
겠는데 방법을 도무지 모르겠습니다..제가 머리가 멍청한 관계루요...흐흐흑...
여러 고수님들의 자세한 설명 부탁드리겠습니다....
> Stirnggrid를 이용해서 간단한 데이타를 출력해야 하는데
> 생성되는 데이타를 저장하고 다시 읽어오는 방법을 모르겠습니다...
> 여기 게시판을 찾아보니까 10page에 달하는 분량이 나오더군요..
> 조금이라도 관계가 되는 것들은 다 읽어 보았지만 결과는 흐흑....ㅠ.ㅠ
> DB를 쓰면 용량이 넘 커질 것 같아서 쓰지 못하겠구, 꼭 Stringgrid를 이용해야
> 겠는데 방법을 도무지 모르겠습니다..제가 머리가 멍청한 관계루요...흐흐흑...
> 여러 고수님들의 자세한 설명 부탁드리겠습니다....
///////////////////////////////////////////////////////
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
SaveBtn: TButton;
LoadBtn: TButton;
procedure SaveBtnClick(Sender: TObject);
procedure LoadBtnClick(Sender: TObject);
private
{ Private declarations }
public
procedure LoadFromFile(const Filename: string);
procedure LoadFromStream(S: TStream);
procedure SaveToFile(const Filename: string);
procedure SaveToStream(S: TStream);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.LoadFromFile(const Filename: string);
var
S: TFileStream;
begin
S := TFileStream.Create(Filename, fmOpenRead);
try
LoadFromStream(S);
finally
S.Free;
end;
end;
procedure TForm1.LoadFromStream(S: TStream);
var
Len: Integer;
Text: String;
Col, Row, ColCount, RowCount: LongInt;
begin
S.ReadBuffer(RowCount, SizeOf(RowCount));
S.ReadBuffer(ColCount, SizeOf(ColCount));
StringGrid1.RowCount := RowCount;
StringGrid1.ColCount := ColCount;
for Row := 0 to (RowCount - 1) do
for Col := 0 to (ColCount - 1) do
begin
S.ReadBuffer(Len, SizeOf(Len));
SetString(Text, nil, Len);
S.ReadBuffer(Pointer(Text)^, Len);
StringGrid1.Cells[Col, Row] := Text;
end;
end;
procedure TForm1.SaveToFile(const Filename: string);
var
S: TStream;
begin
S := TFileStream.Create(Filename, fmCreate);
try
SaveToStream(S);
finally
S.Free;
end;
end;
procedure TForm1.SaveToStream(S: TStream);
var
Len: Integer;
Text: String;
Col, Row, ColCount, RowCount: LongInt;
begin
RowCount := StringGrid1.RowCount;
ColCount := StringGrid1.ColCount;
S.WriteBuffer(RowCount, SizeOf(RowCount));
S.WriteBuffer(ColCount, SizeOf(ColCount));
for Row := 0 to (RowCount - 1) do
for Col := 0 to (ColCount - 1) do
begin
Text := StringGrid1.Cells[Col, Row];
Len := Length(Text);
S.WriteBuffer(Len, SizeOf(Len));
S.WriteBuffer(Pointer(Text)^, Len);
end;
end;
procedure TForm1.SaveBtnClick(Sender: TObject);
begin
SaveToFile('Save.Text');
end;
procedure TForm1.LoadBtnClick(Sender: TObject);
begin
LoadFromFile('Save.Text');
end;
end.