![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]> Что это может означать, и какие проблемы могут возникнуть?
Это означает, что корректность работы данной функции зависит от операционной системы. То есть, где-то будет работать, ге-то нет, где-то частично.