Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Delphi 2010 выводит лишний Warning


Автор: Matematik 9.4.2010, 21:33
Лог компилятора
Код

Checking project dependencies...
Compiling Project1.dproj (Debug configuration)
[DCC Warning] Unit1.pas(28): W1000 Symbol 'FileAge' is deprecated
[DCC Warning] Unit1.pas(28): W1000 Symbol 'FileAge' is deprecated
Success
Elapsed time: 00:00:00.8

Код
Код

procedure TForm1.FormCreate(Sender: TObject);
var dat: TDateTime;
begin
  SysUtils.FileAge(Application.ExeName, dat); // строка 28
  ShowMessage(FormatDateTime('yyyy', dat));
end;

Если убрать SysUtils. перед FileAge(, сообщение пропадает.

Что это значит?

Автор: Rennigth 9.4.2010, 21:49
В Turbo Explorer Сообщение не пропадает и c SysUtils и без. Что там в 2009 сказать не могу... А то что варнинг появляется это правильно, в справке написанож:
Цитата

The symbol is tagged (using the deprecated hint directive) as no longer current and is maintained for compatibility only. You should consider updating your source code to use another symbol, if possible.
 
The $WARN SYMBOL_DEPRECATED ON/OFF compiler directive turns on or off all warnings about the deprecated directive on symbols in the current unit.

Вообщем функция оставлена только для совместимости и использовать ее не стоит. Директивами можешь убрать.
В 2009 может сделали ее аналог, но в другом юните, посмотри откуда она если без SysUtils. 

Автор: CodeMonkey 9.4.2010, 22:32
Цитата(Matematik @  9.4.2010,  21:33 Найти цитируемый пост)
Что это значит?

Баг компилятора. Варнинго-выдавалка не видит разницы между двумя версиями FileAge при поставленном префиксе SysUtils.

Цитата(Rennigth @  9.4.2010,  21:49 Найти цитируемый пост)
Что там в 2009 сказать не могу...

В D2009 две версии: старая и новая:

Код
function FileAge(const FileName: string): Integer; overload; deprecated;
function FileAge(const FileName: string; out FileDateTime: TDateTime): Boolean; overload;


Старый вариант, пришедший к наж аж из Паскаля, действительно помечен как deprecated, однако, новый (который и использует Matematik) - вполне юзабельный и проблем с ним нет. Варнинг на него выдаваться тоже не должен. А то, что он выдаётся - это глюк. 

Либо отключать варнинги директивой, либо не префиксовать его.

Автор: Matematik 10.4.2010, 17:02
Обнаружил случайно, когда правил модуль zlib http://www.base2ti.com/downloads/ под 2010 версию.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)