태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

레코드

Posted on 2008/07/03 15:48
Filed Under Delphi

델파이에서 기본적인 함수
 정수형 : Integer
 문자형 : String
 실수형 : Single
 논리형 : Boolean
이외에도 여러가지가 있지만 위에 4개가 자주 사용된다고 한다.

하지만 오늘 알아볼 레코드는 서로 다른 유형의 데이터를 하나의 변수에 저장시킬 수 있다고 한다.
이것 참 유용한 기능이 아닌가.. 123 과 '가나다'라는 서로 다른 타입의 변수들을 하나의 변수로 묶을 수 있다니..

구체적으로 한번 봐보자.
type
  TJumsu = record
    irum : String;
    guk : Integer;
    yung : Integer;
    su : Integer;
    sum : Integer;
    avg : Single;
  end;

1. TJumsu = record
   Tjumsu 란 레코드를 만들었습니다. 이 레코드의 모습은 아래와 같습니다.
Irum     |        guk       |     yung     |      su       |       sum             | avg

2.  irum : String;
     Irum은 String 의 형태다.
    나머지들도 각각 뒤에 가지는 값의 형태다.


이 얼마나 편한 기능인가..
이 기능을 가지고 전에 만들었던 점수 평균별 오름차순을 StringGrid에 옮겨보겠다.

Unit1


implementation

uses Unit2;

{$R *.DFM}
type
  TJumsu = record
    irum : String;
    guk : Integer;
    yung : Integer;
    su : Integer;
    sum : Integer;
    avg : Single;
  end;

Var
 be : Array of TJumsu;
 n : Integer;

procedure TForm1.btJeJangClick(Sender: TObject);
begin
 n := n + 1;
 setlength(be, n+1  );

 be[n].irum := edIrum.Text;
 be[n].guk := StrToInt(edGuk.Text);
 be[n].yung := StrToInt(edYung.Text);
 be[n].su := StrToInt(edSu.Text);
 be[n].sum := be[n].guk + be[n].yung + be[n].su;
 be[n].avg := be[n].sum / 3;

 edIrum.Text := '';
 edGuk.Text := '';
 edYung.Text := '';
 edSu.Text := '';

 edIrum.SetFocus;
end;

procedure TForm1.btBoGiClick(Sender: TObject);
var
  i, j, s, r : Integer;
  temp : Tjumsu;
begin
 Form2.StringGrid1.RowCount := n + 1;

 for i:= 1 to  n - 1 do
   for j := i + 1 to n do
     if be[i].avg < be[j].avg then
     begin
          temp :=  be[i];
          be[i] := be[j];
          be[j] := temp;
     end;

 for i:= 1 to n do
 begin
   form2.StringGrid1.Cells[0, i] := be[i].irum;
   form2.StringGrid1.Cells[1, i] := IntToStr(be[i].guk);
   form2.StringGrid1.Cells[2, i] := IntToStr(be[i].yung);
   form2.StringGrid1.Cells[3, i] := IntToStr(be[i].su);
   form2.StringGrid1.Cells[4, i] := IntToStr(be[i].sum);
   form2.StringGrid1.Cells[5, i] := format('%.2f', [be[i].avg] );
   r:=1;
   for j:=1 to n do
      if be[j].avg>be[i].avg then
         r:=r+1;
   form2.StringGrid1.Cells[6, i] := IntToStr(r);

 end;

 form2.ShowModal();

end;

end.

Unit2

procedure TForm2.FormCreate(Sender: TObject);
begin
 StringGrid1.Cells[0, 0] := '이름';
 StringGrid1.Cells[1, 0] := '국어';
 StringGrid1.Cells[2, 0] := '영어';
 StringGrid1.Cells[3, 0] := '수학';
 StringGrid1.Cells[4, 0] := '총점';
 StringGrid1.Cells[5, 0] := '평균';
 StringGrid1.Cells[6, 0] := '석차';
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
close();
end;

Project1.exe

실행파일



 

트랙백 주소 : http://bozzang.net/trackback/7 관련글 쓰기

댓글을 달아 주세요

Counter

· Total
: 49,622
· Today
: 0
· Yesterday
: 29