Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
ВнизSymbol FileGetAttr is specific to a platform Найти похожие ветки
← →
abhtr (2008-01-28 10:10) [0]В программе есть строка, которая работает:
attr := FileGetAttr(s);
где attr – integer (пробовал word), s – string;
При компиляции выдается предупреждение:
[Warning] uMain.pas(307): Symbol "FileGetAttr" is specific to a platform
Что это может означать, и какие проблемы могут возникнуть?
Я это понял только приблизительно, что код должен быть более "аккуратным", но как это сделать? Т.е. как исправить код, чтобы этого сообщение не было?
← →
KilkennyCat © (2008-01-28 10:27) [1]> Что это может означать, и какие проблемы могут возникнуть?
Это означает, что корректность работы данной функции зависит от операционной системы. То есть, где-то будет работать, ге-то нет, где-то частично.
← →
KilkennyCat © (2008-01-28 10:29) [2]> Т.е. как исправить код, чтобы этого сообщение не было?
сначала подумать, где эта часть кода будет работать.
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:41) [3]да, совсем забыл: в этих случаях компилятору полезно указывать, под какую ОС что будет.
{$IFDEF MSWINDOWS}
....
{$ENDIF}
{$IFDEF LINUX}
....
{$ENDIF}
← →
ketmar © (2008-01-28 11:13) [4]что смешно: кайликса давно нет, а варнинги остались…
← →
abhtr (2008-01-28 11:28) [5]Попробовал так:
{$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:53) [6]а куда ж они деться должны? конечно, останутся. тебе намекали, что код надо аккуратно разделить, а потом для данного модуля сей варнинг выключить.
← →
abhtr (2008-01-28 12:29) [7]Пытаюсь догадаться.
Все функции, которые выдают такое сообщение нужно помещать в отдельный *.pas файл. Например, MyFunc.pas. Затем переходим на этот модуль и вставляем в начале и в конце раздела implementation:
{$IFDEF MSWINDOWS}
...
Здесь реализация функций, которые вызывают сообщение: "[Warning] ..."
...
{$ENDIF}
Пока все правильно? Или все-таки что-то не то?
Если все правильно, то как теперь выключить "[Warning] ..."?
Честно скажу, ни как не получается выбрать время для досконального изучения настроек Dephi, поэтому, если можно, скажите где это делается?
← →
ketmar © (2008-01-28 12:32) [8]в общем да. а делается в настройках компилятора, там, где варнинги настраиваются. project->compiler options->warnings или где-то в том районе.
← →
Игорь Шевченко © (2008-01-28 12:37) [9]{$IFDEF MSWINDOWS}
{$WARN SYMBOL_PLATFORM OFF}
.....
{$ENDIF}
← →
abhtr (2008-01-28 12:57) [10]Спасибо!
Сработало и {$WARN SYMBOL_PLATFORM OFF}, и
Project -> Options... -> Compiller Messages:
Для Platform Symbol снимаем "галочку".
Еще раз, спасибо!
← →
ketmar © (2008-01-28 12:59) [11]>[10] abhtr (28.01.08 12:57)
учти, что «галочка» — она на весь проект влияет. так что правильно — как в [9] написано.
← →
abhtr (2008-01-28 13:12) [12]Спасибо,
> ketmar
.
Учту.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.048 c