Помощь - Поиск - Пользователи - Календарь
Полная версия: Вывод поля записи
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
ofenod
//Имеется тип - запись Student с полем pol:
type
Student=record
pol: (m,j);
end;

var
st1: Student;

begin
st1.pol:=m;
writeln(st1.pol);// Ошибка нельзя выводить данные этого типа
end.
TarasBer
Запись ни при чём.

Даже если написать так:

var
pol: (m,j);

begin
writeln(pol);

То компилироваться не будет.
ofenod
А как же тогда поступить?
volvo
Если Турбо-Паскаль - то:
type
Gender = (m, f);
Student =
record
pol : Gender;
end;
const
GenderTitle : array[Gender] of Char = ('m', 'f');

var
st1 : Student;
begin
st1.pol := m;
writeln (GenderTitle [st1.pol]);
end.
Если ObjectPascal (к примеру, GPC, FPC или Delphi) - то можно попробовать пошаманить с RTTI, может и удастся чего сделать без доп. массива.
-TarasBer-
> Если ObjectPascal (к примеру, GPC, FPC или Delphi) - то можно попробовать пошаманить с RTTI

Как именно? В Д7 я таких фишек не знаю, например. Да и РТТИ тут мало поможет, если идентификаторы на английском, а вывод нужен на русском.
volvo
Если вывод нужен на русском - то и сами идентификаторы должны быть на русском. RTTI может быть будет способен перевести тот идентификатор, который задан пользователем, в строку. Но это не значит, что он будет способен его перевести на какой-то другой язык.

Цитата
В Д7 я таких фишек не знаю, например
Это не значит, что их там нет. В Д7 должен быть модуль TypInfo, этого достаточно.

Цитата
Как именно?
Очень просто:
uses TypInfo;
// ...
WriteLn (GetEnumName (TypeInfo (Gender), Integer (st1.pol)));
Разумеется, можно получение строки вынести в отдельную функцию.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.