Как проверить, определён ли тип

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Как проверить, определён ли тип

Сообщение Cheb »

Возникла необходимость в конструкции

Код: Выделить всё

{$if не определён тип RawByteString }
  type RawByteString = AnsiString;
{$endif}

короче, что-то подобное #if !defined() в Си или !defined() в php

поскольку хочу сохранить совместимость исходников с фпц 2.6 , но он даёт Error: Identifier not found "RawByteString" :x

P.S. fpc 2.6.4 даёт:

Код: Выделить всё

  WriteLn(IntToHex(ptruint(typeinfo(WideString)), 8));
  WriteLn(IntToHex(ptruint(typeinfo(UnicodeString)), 8));
  WriteLn(IntToHex(ptruint(typeinfo(WideChar)), 8));
  WriteLn(IntToHex(ptruint(typeinfo(UnicodeChar)), 8));
//  WriteLn(IntToHex(ptruint(typeinfo(RawByteString)), 8)); 

00422940
0042294C
00422914
00422914

-- откуда видно, что WideChar и UnicodeChar - это одно и то же :lol:
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

а не проще проверять версию fpc через соответствующую директиву?
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Сообщение Cheb »

Да просто настолько уже въелся принцип "не проверяйте версию браузера, проверяйте поддержку конкретных фич" что делать это по версии fpc... ощущается как нечто в корне порочное. :x
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Код: Выделить всё

{$if not declared(RawByteString)}
...
{$endif}
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Сообщение Cheb »

Спасибо :)
Ответить