|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.11.2009, 19:02 | #1 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
запись в файл
Меня интересует вопрос о разнице...
программа ведет лог действий... действия могут совершаться как несколько раз в секунду, так и не совершаться на протяжении минут... меня интересует, есть ли разница между тем, что я буду открывать файл, записывать в него данные (не большие) и закрывать каждый раз при совершаемом действии.... и между тем, если открыть файл в начале программы, и не закрывая его, вести лог действий... так же в этом случае мне интересно, чем черевато то, что если строка о закрытии открытого файла "src.close();" прописана вовсе не будет, а программу закрыть? Вообщем поясните пожалуйста, и что лучше юзать |
23.11.2009, 19:44 | #2 |
Форумчанин
Регистрация: 01.09.2008
Сообщений: 178
|
Открываешь в начале файл, пишешь туда все, что тебе нужно по мере выполнения программы. В любом месте, где обрабатываешь исключение и/или завершаешь прогу, позаботься о закрытии файла.
Разница есть. Если каждую секунду открывать-закрывать файл, то это скажется на быстродействии. Логично же, не?
Быть радикальным - значит понять вещь в её корне. К.Маркс
|
23.11.2009, 20:03 | #3 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
Тогда как обработать закрытие программы, что бы закрыть файл? Я консольное приложение писал
|
23.11.2009, 20:34 | #4 |
Форумчанин
Регистрация: 01.09.2008
Сообщений: 178
|
Если файл открывал с помощью CreateFile, то вызываешь CloseHandle, если с помощью потоков, то f.close().
Так же как и обычно: перед return закрой файл.
Быть радикальным - значит понять вещь в её корне. К.Маркс
|
23.11.2009, 20:39 | #5 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
т.е это в самом конце main() перед return 0?
Код:
|
23.11.2009, 21:11 | #6 |
Форумчанин
Регистрация: 01.09.2008
Сообщений: 178
|
Да, только не вместо, а перед
Код:
Быть радикальным - значит понять вещь в её корне. К.Маркс
|
23.11.2009, 22:54 | #7 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
немножко не понимаю... у меня внутри майн, вызывается еще множество функций... и если программа на моменте выполнения одной из тех функций, при закрытии, не выполняется то, что я перед ретурном прописал... я проверил
|
23.11.2009, 23:07 | #8 |
Форумчанин
Регистрация: 01.09.2008
Сообщений: 178
|
Это называется обработкой исключений.
Ты беспокоишься о том, что у тебя файл не закроется, а то, что программа вылетит - это нормально?
Для того, чтобы программа всегда завершалась корректно, необходимо отслеживать где она может вылететь или где может быть сбой, чтобы в этом случае всегда обеспечить корректное завершение без потерь данных. Приведу пример. Допустим, ты открываешь свой файл и выделяешь память для массива: Код:
Код:
Для этого после запроса памяти необходимо осуществить проверку: Код:
Быть радикальным - значит понять вещь в её корне. К.Маркс
|
23.11.2009, 23:32 | #9 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
А разве данные не сразу сохраняются в файле, по мере их внесения? даже если не закрывать файл
|
24.11.2009, 00:13 | #10 |
Форумчанин
Регистрация: 01.09.2008
Сообщений: 178
|
Сразу. Но кто знает что с ними произойдет после некорректного завершения программы?
Быть радикальным - значит понять вещь в её корне. К.Маркс
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запись в файл | Lemo | Помощь студентам | 3 | 01.03.2009 19:06 |
Запись в файл | |{ot | Общие вопросы Delphi | 6 | 05.07.2008 02:24 |
Запись в файл | [Smarik] | Помощь студентам | 4 | 07.05.2008 23:26 |
Запись в файл | В_И_К_Т_О_Р | Помощь студентам | 9 | 30.01.2008 22:46 |
запись в файл | Prisian | Общие вопросы Delphi | 6 | 24.07.2007 13:43 |