Страница 1 из 1
Delphi: Условная компиляция по номеру версии.
Добавлено: 30 мар 2009, 13:08
BBB
Коллеги, никто не подскажет следующий момент?
Помню, что в Turbo/Borland Pascal существовали предопределенные Define-ы, показывающие номер версии компилятора. Если не ошибаюсь, они назывались Ver50, Ver55, Ver60, Ver70.
Т.е. можно было писать version-зависимый код. Например, насколько я помню, при переходе от версии 5.5 к 6.0 изменился менеджер хипа, и некоторые системные переменные пропали. Поэтому в библиотеке типа Object Profeccional можно было видеть строки типа:
Код: Выделить всё
{$IfDef Ver55}
<тут использовалась припавшая в 6.0 переменная>
{$EndIf}
Вопрос. А есть ли что-нибудь подобное в Delphi? Лазил по встроенному хелпу, но ничего не нашел на этот счет.
Т.е. хотелось бы написать, например, что-то вроде:
Код: Выделить всё
{$IfDef Delphi50}
..............
{$EndIf}
{$IfDef Delphi60}
..............
{$EndIf}
Заранее спасибо.
Re: Delphi: Условная компиляция по номеру версии.
Добавлено: 30 мар 2009, 14:51
Naeel Maqsudov
По прежнему VERxxx
Кроме того VCLxx - версия VCL
Надо пощерстить исходники VCL и стандартных функций. Наверняка там где-то стоит DEFINE.
Нашел:
один интересный файл. Прикольно они в своем прилоежении анализируют версию

Прям аж начиная из каменного века.
http://trac.miranda.im/mainrepo/browser ... c?rev=1221
Re: Delphi: Условная компиляция по номеру версии.
Добавлено: 30 мар 2009, 15:11
BBB
Naeel Maqsudov писал(а):По прежнему VERxxx
А вот нифига не работает это.
У меня сейчас стоил Delphi 5.
Поглядел на
один интересный файл, пишу в коде строки:
Код: Выделить всё
{$IfDef DELPHI5}
sdfsdfsdsdfs_line1;
{$Else}
sdddddddsdfs_line2;
{$Endif}
Получаю синтаксическую ошибку на
sdddddddsdfs_line2.
Re: Delphi: Условная компиляция по номеру версии.
Добавлено: 30 мар 2009, 16:13
Naeel Maqsudov
Внимательнее! В упомянутом файле написано
Код: Выделить всё
{$IFDEF VER130}
{$DEFINE COMPILER5}
{$DEFINE VCL50}
{$IFDEF BCB}
{$DEFINE BCB5}
{$ELSE}
{$DEFINE DELPHI5}
{$ENDIF}
{$ENDIF}
Т.е. все завязано на VER130. И если есть VER130, то среда будет определена дибо как DELPHI5 либо BCB5
Вот этот кусочек вставьте перед своим.
Только после него можно написать "ifdef DELPHI5"
.
Добавлено: 31 мар 2009, 14:16
BBB
Naeel Maqsudov писал(а):Т.е. все завязано на VER130. И если есть VER130, то среда будет определена дибо как DELPHI5 либо BCB5
Вот этот кусочек вставьте перед своим.
Только после него можно написать "ifdef DELPHI5"
Да, действительно. Не обратил я внимание, что все эти Delphi<N> - "рукотворные" дефайны, выставляемые в зависимости от VerXXX. А VerXXX, как я понимаю, продолжает считаться от версий Pascal-я. Ну и эти Delphi<N> (а также Compiler<N>) определяются для большей читабельности (чтобы не вспоминать, например, какой-такой версии Delphi соответствует Ver130

)
Не совсем понимаю (или не сталкивался с этим), каков смысл (что такое) BCB.
Спасибо большое.

Re: Delphi: Условная компиляция по номеру версии.
Добавлено: 31 мар 2009, 15:15
Naeel Maqsudov
Borland CBuilder. Это IDE+тот же самый VCL, но вот язык C вместо Pascal.
Т.е. можно сделать программу, которая скомпилируется одинаково (или почти одинаково) и в Delphi и на CBuilder-е
