안녕하세요
Record 형을 사용하는데
TRec = Record
A : String[10];
B : String[5];
C : String[10];
end;
이렇게 선언했을때(실제로는 레코드 안에 약 30개 정도의 변수가 있음...)
총 25바이트를 저장가능하잖아요?
이걸
var
Temp : String[25];
이런 변수로 서로 한번에 싹~ 대입했다가 한번에 싹~ ^^;
대입한 내용을 다시 레코드형에 가져오는 방법이 있나요?
음...설명이 좀 부족한거 같아서 나름대로 그림 그려봅니다
┌─────────┬───────┬──────────┐
│ A │ B │ C │
└─────────┴───────┴──────────┘
↕ ↕ ↕
┌────────────────────────────┐
│ TEMP │
└────────────────────────────┘
요렇게 상호 대입해서 값을 바로 받아오거나 보낼수 없는지...
/길이/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;