Лабораторная 5. Низкоуровневое управление записями

  1. Дан тип записи сложной структуры с вариантной частью tstruct. Создать процедуру FindField, которая по переданным адресам записи и поля записи, выводит на экран имя поля(-ей).
    Тип записи:
    type
    pstruct=^tstruct;
    tstruct=
     record
      s:ansistring;
      a: array[1..3] of byte;
      b: array of integer;
      case c:boolean of
       true: (
        y:string[5];
        x:integer;
       );
       false: (
        yy:extended;
        xx:byte;
       );
      end;
    
    Процедура:
    procedure FindField(prec:pstruct; pfield:pointer);
    prec - адрес записи
    pfield - адрес поля записи
    
    Примеры:
    ...
    var data:tstruct;
    begin
     findfield(@data,@data.a[2]);
     // вывод - a
     data.s:='hello';
     findfield(@data,@data.s[3]);
     // вывод - s
     findfield(@data,@data.s);
     // вывод - s
     findfield(@data,@data.y[1]);
     // вывод - y yy
     findfield(@data,@data.x);
     // вывод - x yy
     findfield(@data,@data.xx);
     // вывод - xx
     setlength(data.b,5);
     findfield(@data,@data.b[2]);
     // вывод - b
     findfield(@data,@data.b);
     // вывод - b
    end.