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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2015, 05:32   #1
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
Лампочка Защита файлов от повреждений

Здравствуйте. Пишу программу для заметок. В ней нет как таковых кнопок сохранения. Там создаешь новую заметку, и пишешь текст. Можно переключаться по заметкам. Планируется что данная программа будет переносная. И возникла такая проблема, допустим мы набираем текст и выключается свет. Всё, данных нет . Если сохранять после ввода каждого символа, то будет тормозить 100%. Весть процесс сохранности данных лежит на программе.
Подскажите как лучше и безопаснее сохранять данные в такой ситуации?
Simply-Art вне форума Ответить с цитированием
Старый 24.11.2015, 06:52   #2
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 273
По умолчанию

Каждые N минут по таймеру.
?
Filka вне форума Ответить с цитированием
Старый 24.11.2015, 09:20   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

изменение(потеря) фокуса ввода. OnExit
гарантия потери не более чем одной, редактируемой(набираемой) в данной момент, заметки.
Если нужно больше, то ДВА файла
1.Temp ТОЛЬКО текущая заметка на каждый чих( то бишь на каждое изменение)
причем можно именно как журнал этих самых ("чихов") изменений. В качестве бонуса такой схемы неограниченное (в пределах одной редакции) количество откатов (Ctrl + Z).
2. DataBase все заметки по указанию (или OnExit) и очистка Temp
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.11.2015 в 09:32.
evg_m вне форума Ответить с цитированием
Старый 24.11.2015, 09:26   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А я бы тоже по таймеру делал...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2015, 09:28   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

или при простое приложения > N минут.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 24.11.2015, 09:29   #6
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Filka, N минут это не плохо, но сколько скорость печати среднего пользователя? Слов 20? А если тексты копировались, вставлялись. То за пару минут наберется нехилый объем и не очень будет это всё потерять.
evg_m, не особо годиться, а если я набирал текст, вот как сейчас этот ответ, и не терял фокус ввода, и представьте это все просто пропало, мне нужно опять формулировать свои мысли по новой. Думаю это тоже не подойдет.
Simply-Art вне форума Ответить с цитированием
Старый 24.11.2015, 09:35   #7
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Поставьте срабатывание сохранения на постановку знака препинания, например на точку. Записал мысль, поставил точку - автоматически сохранилось.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Старый 24.11.2015, 09:50   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а если я набирал текст, вот как сейчас этот ответ, и не терял фокус ввода, и представьте это все просто пропало
отлично, попробуйте набрать этот текст в браузере и выдерните шнур питания.
Всё пропалало? Это браузер, наверное, плохой.
Откройте MS Word, вставьте текст из буфера обмера. Выдерните шнур питания.
Опять не сохранилось? Да что же MicroSoft не может нормальную программу написать?!

Я Вам больше скажу. Если выдёргивать шнур питания во время работы Windows, то есть шанс получить вообще убитую систему. Но не любит жесткий диск, когда его прерывают на середине операции записи. В лучшем случае появляются потерянные цепочки данных. В худшем - происходит потеря данных.

Для борьбы с выключением питания нужно использовать аппаратные средства - например, UPS. Программным путём эта проблема не решается.

Теперь по поводу сохранения ваших данных.
Считаете, что две минуты это много? Так храните флажок isModified (если пользователь сделал изменения) и каждые 10 секунд проверяйте флажок, если были изменения, сохраняйте.
А при операциях вставки сохраняйте сразу, как только пользователь вставил текст.
Все эти резервные сохранения делайте во временный файл (смотрите пост #3).

И поймите, что у пользователя при аварийном выключении питания есть шанс потерять намного больше, чем очень важные заметки.

p.s. история из жизни. я как-то набирал один большой документ на ДВК. Без жесткого диска (его там не было). Сохранение на гибкие дискеты.
Чтобы сохранить документ, нужно было нажать некую управляющую комбинацию клавиш. Но сохранение на дискету проходило не очень быстро (ну, пусть это будет для определённости 10 секунд). Я начал набирать документ. Просидел минут тридцать. Набрал несколько страниц. И тут выключили свет в помещении, где я работал. Через пару минут включили. Но всё, разумеется, потерялось. Я очень расстроился. полчаса потрачено впустую. Ладно. Ситуация экстренная. Ничего не поделаешь, бывает. Начал набирать заново. и минут через 15 свет опять отключили. Начал набирать заново. Но в следующий раз я уже сохранял документ каждые несколько минут набора. Свет выключался ещё раз. Но потерял я при этом всего несколько строчек набранного текста (и несколько минут времени на повторный набор). С тех пор у меня "безумная" привычка. Когда я набираю текст в редакторе я периодически нажимаю Ctrl-S (сохранить). Это отнимает секунды. Но может сохранить намного больше.
Так что, сохранение данных - проблема пользователя, а не ваша.

Успехов!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.11.2015, 09:57   #9
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Так что, сохранение данных - проблема пользователя, а не ваша.
Успехов!
Я не делаю больших редакторов чтобы там вводили объемные тексты. И хочу максимально упростить программу. Если уж сравнивать, то что-то типа переносной программы StykiNot от майкрософта, только несколько иного формата. Поэтому и хотелось бы сделать что-то что автоматически будет сохранять то что вы ввели.
Simply-Art вне форума Ответить с цитированием
Старый 24.11.2015, 10:01   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я понял Вас.
на мой взгляд в пост #3 предложено толковое решение вашей проблемы.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Защита файлов serg_volk777 Visual C++ 4 19.11.2011 11:44
защита файлов beygul Помощь студентам 19 19.01.2010 09:05
Защита файлов! Sanek777 Общие вопросы Delphi 2 26.09.2008 17:03
Защита файлов от удаления Viteef Свободное общение 5 15.06.2007 22:44
Защита файлов от удаления Viteef Общие вопросы Delphi 10 02.06.2007 07:40