Q&A

  • Record 형을 사용할때...
안녕하세요

Record 형을 사용하는데

TRec = Record
  A : String[10];
  B : String[5];
  C : String[10];
end;

이렇게 선언했을때(실제로는 레코드 안에 약 30개 정도의 변수가 있음...)

총 25바이트를 저장가능하잖아요?

이걸
var
  Temp : String[25];

이런 변수로 서로 한번에 싹~ 대입했다가 한번에 싹~ ^^;

대입한 내용을 다시 레코드형에 가져오는 방법이 있나요?

음...설명이 좀 부족한거 같아서 나름대로 그림 그려봅니다

┌─────────┬───────┬──────────┐
│             A            │           B        │                C            │
└─────────┴───────┴──────────┘
               ↕                           ↕                           ↕
┌────────────────────────────┐
│                                    TEMP                                       │
└────────────────────────────┘

요렇게 상호 대입해서 값을 바로 받아오거나 보낼수 없는지...

2  COMMENTS
  • Profile
    이경문 2003.04.15 09:53
    String[3]이라 하면 다음과 같이 구성됩니다.
    /길이/String[1]/String[2]/String[3]
    그렇기 때문에 말씀하신 것 처럼 처리하기 힘듭니다.
    다음과 같이 구성하면 됩니다.

    TRec = packed record
      A : array[0..9] of Char;
      B : array[0..4] of Char;
      C : array[0..9] of Char;
    end;

    여기서 "packed" 라는 예약어는 byte align을 사용한다는 뜻입니다.

    그리고 한꺼번에 옮길 경우는 다음과 같이 해 주면 됩니다.

    var
      MyRec: TRec;
      Temp : array[0 .. 24] of Char; // 24 는 전체 크기 - 1
    begin
      // Temp <- MyRec
      StrMove(@Temp[0], @MyRec, sizeof(Temp));
    // MyRect <- Temp
      StrMove(@MyRec, @Temp[0], sizeof(MyRec));
    end;

  • Profile
    서정길 2003.04.15 20:29
    고맙습니다~

    가르쳐주신대로 하니 되네요 ^^

    행복하세요