본문 바로가기

코딩 이야기/델파이 코딩

델파이 구조체(Record) 설명 및 예시

델파이 구조체(Record) 설명 및 예시

델파이 소스 코드는 주로 .pas 확장자를 가진 파일에 작성됩니다.

델파이 구조체(Record) 설명

델파이에서 구조체는 Record 키워드를 사용하여 정의합니다. C/C++ 언어의 struct와 유사하게, 서로 다른 데이터 타입의 여러 필드(멤버 변수)들을 하나의 논리적인 단위로 묶어 관리할 때 사용됩니다.

Record를 사용하면 관련된 데이터를 그룹화하여 코드를 더 구조적이고 이해하기 쉽게 만들 수 있습니다. 예를 들어, 한 사람의 이름, 나이, 주소 등의 정보를 하나의 TPerson Record로 정의하여 관리할 수 있습니다.

선언 방법:

type
  TMyRecordType = record
    FieldName1: DataType1;
    FieldName2: DataType2;
    // ... 필요한 만큼 필드 추가
  end;

type 섹션에서 Record 타입을 정의하고, var 섹션에서 해당 타입의 변수를 선언하여 사용합니다. Record 변수의 각 필드는 . (점) 연산자를 사용하여 접근합니다.

var
  MyVariable: TMyRecordType;
begin
  MyVariable.FieldName1 := Value1;
  MyVariable.FieldName2 := Value2;
  // ... 필드 값 할당 또는 사용
end;

예시: 간단한 사람 정보 Record 사용

다음은 TPerson이라는 Record를 정의하고 사용하는 간단한 예시입니다.


unit Unit1; // 유닛 이름 (예시)

interface

uses
  System.SysUtils, System.Classes; // 필요한 유닛 추가

// Record 정의는 보통 interface 섹션 또는 implementation 섹션의 type 섹션에 작성합니다.
type
  // TPerson Record 정의
  TPerson = record
    Name: string;       // 이름 (문자열)
    Age: Integer;       // 나이 (정수)
    IsStudent: Boolean; // 학생 여부 (참/거짓)
  end;

implementation

// 이 코드는 보통 프로시저나 함수 내에 작성됩니다.
// 예시를 위해 begin...end 블록 내에 직접 작성했습니다.
procedure UsePersonRecord; // 예시 프로시저
var
  Person1: TPerson; // TPerson 타입의 변수 선언
  Person2: TPerson; // 또 다른 TPerson 변수 선언
begin
  // Person1 변수의 필드에 값 할당
  Person1.Name := '김철수';
  Person1.Age := 30;
  Person1.IsStudent := False;

  // Person2 변수의 필드에 값 할당
  Person2.Name := '이영희';
  Person2.Age := 22;
  Person2.IsStudent := True;

  // 할당된 Record 필드 값 사용 예시 (실제 애플리케이션에서는 ShowMessage 등으로 결과를 볼 수 있습니다)
  // 아래는 개념적인 사용 예입니다.

  // Writeln('이름: ' + Person1.Name + ', 나이: ' + IntToStr(Person1.Age));
  // if Person2.IsStudent then
  //   Writeln(Person2.Name + '는 학생입니다.')
  // else
  //   Writeln(Person2.Name + '는 학생이 아닙니다.');

  // 실제 VCL/FMX 애플리케이션에서는 다음과 같이 사용될 수 있습니다.
  // ShowMessage(Person1.Name + '님의 나이는 ' + IntToStr(Person1.Age) + '세 입니다.');

end; // UsePersonRecord 프로시저 끝

// 프로그램의 주 실행 시작점 (DPR 파일이나 다른 유닛의 초기화 섹션 등)에서
// UsePersonRecord 프로시저를 호출하여 사용할 수 있습니다.
// 예:
// begin
//   UsePersonRecord;
// end;

end. // Unit1 유닛 끝
            

위 예시에서는 TPerson Record를 정의하고, Person1Person2라는 변수를 선언한 후, 각 변수의 Name, Age, IsStudent 필드에 값을 할당하고 사용하는 방법을 보여줍니다. Record는 이처럼 여러 데이터를 하나의 묶음으로 다룰 때 유용하게 사용됩니다.