Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2010, 18:37   #1
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость CloseFile(ft)

Вредно ли каждый раз когда записываешь в файл, вконце работы не закрывать его?
Код:
CloseFile(ft);
Lemo вне форума Ответить с цитированием
Старый 08.06.2010, 18:40   #2
ArtJuhn
Пользователь
 
Аватар для ArtJuhn
 
Регистрация: 31.05.2010
Сообщений: 24
По умолчанию

Если файловая переменная объявлена как локальная, то после выхода из какой-либо процедуры, файл останется открытым, и его нельзя будет переименовать или удалить (до тех пор, пока программа не будет закрыта). Поэтому желательно закрывать.
ArtJuhn вне форума Ответить с цитированием
Старый 08.06.2010, 18:43   #3
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Это понятно... Но я сейчас говорю о вреде, а не о недостатках...
Lemo вне форума Ответить с цитированием
Старый 08.06.2010, 19:46   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если локальная то выбора нет.
вообще лучше открыть в начале работы(если постоянно обновлять надо) и закрыть в конце...так быстрее будет.
вообще лучше потоки я думаю...там ставить шаринг если надо, но это личное мнение
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.06.2010, 21:06   #5
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

В моем проекте я просто не могу файл закрыть
Код:
   AssignFile(ft,'1.txt');
   Rewrite(ft);
   FileSetAttr('1.txt',faHidden);

   



while GetMessage(msg,HInstance,0,0) do
 begin


   TranslateMessage(msg);
   DispatchMessage(msg);

//тут идет условный оператор, если он срабатывает то я заношу в фал какуе то строку...
// сдесь закрыть файл, то будет ошибка(см ниже)
end;
//closefile(ft); // до суда программа не доходит, так как если выйти из цикла она перестанит работать

И в дальнейшем вообще не могу получить доступ что бы через FileSize узнать размер этого файла
Изображения
Тип файла: jpg 1.jpg (25.9 Кб, 104 просмотров)
Lemo вне форума Ответить с цитированием
Старый 08.06.2010, 21:11   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
до суда программа не доходит, так как если выйти из цикла она перестанит работать
да ну?
кто вам сказал что программа после цикла сообщений ничего не может сделать?(если вы конечно в реакцию на сообщение не делаете ExitProcess)
все она может там, в вашем случае лучше TFileStream наверно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.06.2010, 21:19   #7
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Код:
program Project1;

uses
  windows,Dialogs;

  var
  msg:Tmsg;
{$R *.res}

begin
while GetMessage(msg,HInstance,0,0) do
 begin


   TranslateMessage(msg);
   DispatchMessage(msg);

end;
ShowMessage('gg');
end.

Последний раз редактировалось Lemo; 08.06.2010 в 21:30.
Lemo вне форума Ответить с цитированием
Старый 08.06.2010, 21:22   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

А действительно, если нет ExitProcess, то можно закрытие файла выполнять в разделе finalization.
Sibedir вне форума Ответить с цитированием
Старый 08.06.2010, 21:26   #9
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Если Вы вносите изменения в файл, то все эти процедуры сначала происходят в памяти. Физическое изменение файла на диске происходит только после команды закрытия файла. Вот и решайте - нужно или нет. Однозначно да. С точки зрения объектного подхода ( а файл тот же объект) любой объект после создания и использования должен быть уничтожен (для файла - закрыт) дабы не перегружать ресурс памяти.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 08.06.2010, 21:28   #10
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

посмотрите на 7 пост.
Lemo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц