Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Symbol 'FileGetAttr' is specific to a platform [D7, XP]


abhtr ©   (2008-01-28 10:10:00) 

В программе есть строка, которая работает:
attr := FileGetAttr(s);
где attr – integer (пробовал word), s – string;

При компиляции выдается предупреждение:
[Warning] uMain.pas(307): Symbol 'FileGetAttr' is specific to a platform

Что это может означать, и какие проблемы могут возникнуть?
Я это понял только приблизительно, что код должен быть более "аккуратным", но как это сделать? Т.е. как исправить код, чтобы этого сообщение не было?


abhtr   (2008-01-28 13:12:00) [1]

Спасибо,
> ketmar
.
Учту.


ketmar   (2008-01-28 12:59:00) [2]

>[10] abhtr (28.01.08 12:57)
учти, что «галочка» — она на весь проект влияет. так что правильно — как в [9] написано.


abhtr   (2008-01-28 12:57:00) [3]

Спасибо!
Сработало и {$WARN SYMBOL_PLATFORM OFF}, и
Project -> Options... -> Compiller Messages:
Для Platform Symbol снимаем "галочку".
Еще раз, спасибо!


Игорь Шевченко   (2008-01-28 12:37:00) [4]

{$IFDEF MSWINDOWS}
{$WARN SYMBOL_PLATFORM OFF}
.....
{$ENDIF}


ketmar   (2008-01-28 12:32:00) [5]

в общем да. а делается в настройках компилятора, там, где варнинги настраиваются. project->compiler options->warnings или где-то в том районе.


abhtr   (2008-01-28 12:29:00) [6]

Пытаюсь догадаться.
Все функции, которые выдают такое сообщение нужно помещать в отдельный *.pas файл. Например, MyFunc.pas. Затем переходим на этот модуль и вставляем в начале и в конце раздела implementation:

{$IFDEF MSWINDOWS}
...
Здесь реализация функций, которые вызывают сообщение:  "[Warning] ..."
...
{$ENDIF}

Пока все правильно? Или все-таки что-то не то?
Если все правильно, то как теперь выключить "[Warning] ..."?
Честно скажу, ни как не получается выбрать время для досконального изучения настроек Dephi, поэтому, если можно, скажите где это делается?


ketmar   (2008-01-28 11:53:00) [7]

а куда ж они деться должны? конечно, останутся. тебе намекали, что код надо аккуратно разделить, а потом для данного модуля сей варнинг выключить.


abhtr   (2008-01-28 11:28:00) [8]

Попробовал так:

         {$IFDEF MSWINDOWS}
            GetDir(0,s); { 0 = Current drive }
            s:=s+'\Aktosp.arj';
            FileSetAttr(s,attr and not faReadOnly);
         {$ENDIF}

Сообщения:
[Warning] uMain.pas(307): Symbol 'FileSetAttr' is specific to a platform
[Warning] uMain.pas(307): Symbol 'faReadOnly' is specific to a platform
остались :о(


ketmar   (2008-01-28 11:13:00) [9]

что смешно: кайликса давно нет, а варнинги остались…


KilkennyCat   (2008-01-28 10:41:00) [10]

да, совсем забыл: в этих случаях компилятору полезно указывать, под какую ОС что будет.

{$IFDEF MSWINDOWS}
....
{$ENDIF}
{$IFDEF LINUX}
....
{$ENDIF}


KilkennyCat   (2008-01-28 10:29:00) [11]

> Т.е. как исправить код, чтобы этого сообщение не было?

сначала подумать, где эта часть кода будет работать.
faReadOnly
   The file is read-only.
faHidden
   The file is hidden. (On unix, this means that the filename starts with a dot)
faSysFile
   The file is a system file (On unix, this means that the file is a character, block or FIFO file).
faVolumeId
   Volume Label. Not possible under unix.
faDirectory
   File is a directory.
faArchive
   file is an archive. Not possible on Unix


KilkennyCat   (2008-01-28 10:27:00) [12]

> Что это может означать, и какие проблемы могут возникнуть?

Это означает, что корректность работы данной функции зависит от операционной системы. То есть, где-то будет работать, ге-то нет, где-то частично.


Наверх

Титульная страница Поиск, карта сайта Написать письмо