그러니까 StringGrid를 이용해서 점수매기는 걸 할려구 합니다..
어떤 거냐면 우선 1~10등까지 보여주는데 이름을 입력 받고 각각의 점수를
비교해서 순위를 매겨야합니다...방법은 두가지가 있다고 들었습니다..
그냥 StringGrid를 이용해서 해도 되는데 종료하면 데이타 들이 다 사라지는 방법하고
txt화일을 만들어서 다음에도 계속 그 화일에 저장하도록 해서 그 데이타를 유지하는
방법...이왕이면 전 후자의 경우로 하고 싶은데...
txt화일을 어떻게 생성해서 어떻게 연결시키는지 도무지 알수가 없습니다..
멋있는 고수님들께서 멋진 방법을 가르쳐 주시길 간절하게 기다리고 있겠습니다...
> 그러니까 StringGrid를 이용해서 점수매기는 걸 할려구 합니다..
> 어떤 거냐면 우선 1~10등까지 보여주는데 이름을 입력 받고 각각의 점수를
> 비교해서 순위를 매겨야합니다...방법은 두가지가 있다고 들었습니다..
> 그냥 StringGrid를 이용해서 해도 되는데 종료하면 데이타 들이 다 사라지는 방법하고
> txt화일을 만들어서 다음에도 계속 그 화일에 저장하도록 해서 그 데이타를 유지하는
> 방법...이왕이면 전 후자의 경우로 하고 싶은데...
> txt화일을 어떻게 생성해서 어떻게 연결시키는지 도무지 알수가 없습니다..
> 멋있는 고수님들께서 멋진 방법을 가르쳐 주시길 간절하게 기다리고 있겠습니다...
{쓰기}
procedure SaveGridToStream(aGrid: TStringGrid);
var
i, k: Integer;
iBuf: Integer;
S: String;
FS: TFileStream;
procedure WrInt( anInt: Integer );
begin
FS.WriteBuffer(anInt, Sizeof(anInt));
end;
begin
FS := TFileStream.Create('temp.dat', fmCreate or fmOpenWrite);
try
with aGrid do begin
WrInt( ColCount );
WrInt( rowCount );
for i:= 0 to rowCount-1 do
for k:= 0 To colCount-1 do begin
S:= Cells[k, i];
WrInt(Length(S));
if Length(S) > 0 then
FS.WriteBuffer(S[1], Length(S));
end;
end;
finally
FS.Free;
end;
end;
{읽기}
Procedure LoadGridFromStream(aGrid: TStringGrid);
Var
i, k: Integer;
iBuf: Integer;
S: String;
FS: TFileStream;
Function RdInt: Integer;
Begin
FS.ReadBuffer(Result, Sizeof(Result));
End;
Begin
FS := TFileStream.Create('temp.dat', fmOpenRead);
try
With aGrid Do Begin
ColCount:= RdInt;
RowCount:= RdInt;
For i:= 0 To rowCount-1 Do
for k:= 0 To colCount-1 Do Begin
iBuf := RdInt;
If iBuf > 0 Then Begin
SetLength(S, iBuf);
FS.ReadBuffer(S[1], iBuf);
Cells[k, i] := S;
End;
End;
End;
finally
FS.Free;
end;
End;
procedure TForm1.SaveButtonClick(Sender: TObject);
begin
SaveGridToStream(StringGrid1);
end;
procedure TForm1.LoadButtonClick(Sender: TObject);
var
i: Integer;
begin
for i := 0 to StringGrid1.RowCount - 1 do
StringGrid1.Rows[i].Clear;
LoadGridFromStream(StringGrid1);
end;
procedure TForm1.FormShow(Sender: TObject);
var
col, row: Integer;
begin
{테스트를 위해 값을 임으로 넣었습니다.}
StringGrid1.RowCount := 5;
StringGrid1.ColCount := 6;
for col:=0 to 5 do
for row:=0 to 4 do
StringGrid1.Cells[col, row] := '테스트?';
end;