프로 시저에 "모든"레코드 유형을 전달할 수 있습니까?함수의 유형이 지정되지 않은 매개 변수를 통해 전달 된 레코드를 마무리하는 방법은 무엇입니까?
"레코드"를 여러 번 사용했습니다.
Finalize(R);
FillChar(R, SizeOf(R), #0);
문제는 내가 기록의 어떤 종류를 전달하는 방법을 취소 할 수 있다는 것입니다 :
type
TR = record
a: string;
b: string;
end;
을 지우려면 내가 쓸 필요가?
나는이 힌트를 얻었습니다. "식 초기화/마무리 필요 없음".
procedure ClearRecord(var R);
begin
Finalize(R);
FillChar(R, SizeOf(R), #0);
end;
모든 정보 주셔서 감사합니다!
나는 처음에이 지정되지 않은 매개 변수를 발견하지 않았다. 유형이 지정되지 않은 매개 변수를 사용하여 일반적인 것을 수행 할 수 없습니다. @ LURD의 대답은 나에게 잘 어울립니다. –
당신의 프로 시저'ClearRecord'는 어떤 데이터에 대한 원시 포인터를 얻습니다. 그것은'TypeInfo (R)'을 두 번째 인수로 전달하고 그 레코드 레이아웃을 읽을 수 있어야합니다.하지만 나는 LU RD의 대답에 동의합니다. 이것은 너무 복잡해서 노력할만한 가치가 없습니다. – hvd
@hvd 'InitializeArray (@R, TypeInfo (TR), 1)'을 사용하여이를 달성 할 수는 있지만 예전의 오래된 할당이 가장 좋습니다. –