Форум: "Начинающим";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];
ВнизКак работает assignfile Найти похожие ветки
← →
Alex4555 (2009-10-12 15:34) [0]Добрый....
есть проседура
procedure MakeLog (const A, FileName : String);
var
savefile : Text;
begin
assignfile (savefile,filename);
if not fileexists (filename) then rewrite (savefile) else append (savefile);
writeln (savefile,datetimetostr (now)+" "+pmessage);
closefile (savefile);
end;
filename - вида "log.txt"
Запустили программу. В Рабочем каталоге соответственно создается файл log.txt с логом
но если в программе где то вызыватся диалог сохранения файла и осуществляется переход в какую то другую папку то впоследствии Лог-файл уже пишется в этой папке.
Что это? - изменение рабочего каталога программы ? или ???
Где тут неувязка?
← →
RWolf © (2009-10-12 15:40) [1]текущий каталог меняется.
← →
Kolan © (2009-10-12 15:40) [2]Использовав диалог сохранения файла вы сменили рабочий каталог. Используйте полный путь (см. ParamStr(0)) и проблем не будет.
Более того создавать файлы рядом с программой опасно. Если она будет лежать в Програм Файлс на это может не быть прав.
Замечания по коду
>if not fileexists (filename) then rewrite (savefile) else append (savefile);
Забавно. Почему не наоборотif FileExists(filename) then
Append(savefile)
else
Rewrite(savefile);
Еще вы забыли проtry finally
.
← →
Игорь Шевченко © (2009-10-12 18:10) [3]
> но если в программе где то вызыватся диалог сохранения файла
> и осуществляется переход в какую то другую папку
то в программе надо указать опцию ofNoChangeDir у TOpenDialog
← →
Kolan © (2009-10-12 18:21) [4]
> надо указать опцию ofNoChangeDir у TOpenDialog
Несогласен, это изменит привычное поведение диалога и когда пользователь захочет открыть еще один файл из той же папки, ему придется снова путешествовать по файловой системе.
← →
Leonid Troyanovsky © (2009-10-12 18:29) [5]
> Kolan © (12.10.09 18:21) [4]
> Несогласен
А я несогласен с FileExists.
--
Regards, LVT.
← →
Медвежонок Пятачок © (2009-10-12 18:29) [6]ему придется снова путешествовать по файловой системе.
это если он на ископаемой оси сидит.
← →
Игорь Шевченко © (2009-10-12 18:41) [7]
> Несогласен, это изменит привычное поведение диалога и когда
> пользователь захочет открыть еще один файл из той же папки,
> ему придется снова путешествовать по файловой системе.
Откуда нам дано знать, что есть привычно для пользователя и как он выполняет свои задачи ?
Правилом хорошего тона является запоминание последнего выбранного файла и при повторном открытии диалога установка в тот же каталог. Смена же каталога в результате навигации при открытии потребует больше усилий от программиста, следовательно, будет допущено больше ошибок.
← →
Плохиш © (2009-10-12 21:38) [8]
> Kolan © (12.10.09 18:21) [4]
>
>
> > надо указать опцию ofNoChangeDir у TOpenDialog
>
> Несогласен, это изменит привычное поведение диалога и когда
> пользователь захочет открыть еще один файл из той же папки,
> ему придется снова путешествовать по файловой системе.
Я не понял, тут обсуждается программа, создаваемая программистом или сантехником?
← →
Anatoly Podgoretsky © (2009-10-12 21:46) [9]Ну точно не программистом, он даже вопрос не может оформить, спрашивает про одно, объясняет другое, а речь идет о третьем, о поведение диалога, а проблема в относительных путях.
Ладно ответим на вопрос - assignfile просто записывает указаное имя в поле файловой переменной и ничего более.
Более того туда можно писать любую ерунду, ошибки не будет, лишь бы была совместимость по типу, а содержимое никак не проверяется.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c