TFieldInfo = record
id : word;
name : array[0.._MAX_FIELD_NAME] of char;
end;
TField = record
Next: PTField;
info: TFieldInfo;
case data: integer of
1: (i32: ^longint);
2: (f32: ^single);
3: (str: pointer);
4: (ptr: PChar);
end;
델파이 소스 좀 보구 있는데 위 TFiled 레코드 타입에 case 부분이 어떤식으로 작동하는지 첨 보는 거라 잘 모르겠네요.
사용 예도 하나 주시면 정말 감사하구요..
예를 들어 TFiled 에서 어떻게 case에 해당하는 값들을 읽어오는지 등등??
부탁합니다.
i32, f32, str, ptr이란 필드들이 하나의 메모리 공간을 공유해서 사용합니다. 때문에 메모리를 절약하는 이점이 있죠...
사용법도 일반 필드들 사용하는것과 똑같습니다. 다만 메모리 공간을 공유하기 때문에 동시에 서로다른 값을 저장할 수는 없죠...
var
F: TField;
begin
f.next := somevalue;
f.i32 := some_longint_pointer_variable;
f.str := some_string_pointer_variable;
...
end;