Если вы уверены, что не будете
одновременно пользоваться в переменной полями обоих вариантов структуры, можно использовать условное описание вашего типа:
Код:
TUser = record
cat_id: Integer;
case View: Byte of
1: (user_id : Integer;
user_name : String[16];
user_mail : String[32];
user_age : Integer);
2: (cat_name : String[16];
user_date : String[16]);
end;
Только вы сами должны контролировать то, чтобы данные, записанные в файл, считывались в переменную типа TUser, и в этой переменной использовались именно те поля, которые записывались в файл. При необходимости смотрите подробнее в справке по теме
Variant parts in records.