Q&A

  • 제발 좀 부탁드립니다..ㅠ.ㅠ(Stringgrid...)
Stirnggrid를 이용해서 간단한 데이타를 출력해야 하는데

생성되는 데이타를 저장하고 다시 읽어오는 방법을 모르겠습니다...

여기 게시판을 찾아보니까 10page에 달하는 분량이 나오더군요..

조금이라도 관계가 되는 것들은 다 읽어 보았지만 결과는 흐흑....ㅠ.ㅠ

DB를 쓰면 용량이 넘 커질 것 같아서 쓰지 못하겠구, 꼭 Stringgrid를 이용해야

겠는데 방법을 도무지 모르겠습니다..제가 머리가 멍청한 관계루요...흐흐흑...

여러 고수님들의 자세한 설명 부탁드리겠습니다....

1  COMMENTS
  • Profile
    이기현 2000.04.25 03:14
    괴로운 넘 wrote:

    > 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.