Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.01.16;
Скачать: [xml.tar.bz2];

Вниз

вопрос по сохранению данных   Найти похожие ветки 

 
aha   (2010-10-23 21:42) [0]

хочу задать вопрос такой , ранее программу по сохранению данных идущих с некоторых дивайсов делал так Ж
перед началом работы дивайса , создавал окно ,  требующий создание файла процедурой  REWRITE(File);
после приема данных ( данные идут периодически максимум раз в секунду ) дописывал в файл таким образом
Append(File);
WRITE(file, параметры дивайса ).
Так не очень правильно наверное
Хочу попробовать таким образом , стартую , при этом независимо от желания будет создаваться текстовый файл , типа буфера. А после завершения работы дивайса , перед закрытием программы будет запрос , хотим ли сохранить данные и в каком формате . и программа открыв буф. текстовый файл перепишет в нужном формате и сохранит на диске и по желанию переименут файл в требуемый . Так как не хочется терять данные при случайном зависании программы, отключении дивайса и тому подобное , можно ли каждый раз при записи файл закрывать и не будет ли тормозить работу ?


 
Anatoly Podgoretsky ©   (2010-10-23 21:45) [1]

> aha  (23.10.2010 21:42:00)  [0]

А замерить самому, без нас?


 
aha   (2010-10-23 21:49) [2]

Анатолию - не совсем понял , что  замерить ?
я хотел спросить как все таки правильно делать , как я делаю работает уже много лет. Просто в фирм. программах делается таким образом как я хочу сделать , то есть после работы с дивайсом предлагается сохранить файл, думаю где хранятся данные , если просто в массиве , то при случайном отключении все данные потеряются ..


 
Anatoly Podgoretsky ©   (2010-10-23 21:58) [3]

> aha  (23.10.2010 21:49:02)  [2]

Вот это "не будет ли тормозить работу ?"
И насчет правильности - огласи критерий правильности.


 
Юрий Зотов ©   (2010-10-23 21:59) [4]

Что для Вас важнее - скорость программы или риск потери данных?

Если риск потери данных, то так и надо делать, как Вы делали (плюс еще и закрывать файл после каждого добавления).

А если важнее скорость, то можно накапливать данные в памяти, а в конце работы (или по достижении размера буфера) сбрасывать их в файл.


 
aha   (2010-10-23 22:10) [5]

данные не очень быстры , максимум до десяти раз в секунду и то редко такая скорость ;
раньше не закрывал файл , при авар. ситуациях часть файла всегда сохранялся.
У себя то могу проверить , комп. хороший , не будет тормозить , а у заказчиков всякие компы бывают ...
А такой вариант какой я задумал , насчет записи во временный файл , и перед завершением перепись в нужный, в соответст. формате не хороший ?


 
Anatoly Podgoretsky ©   (2010-10-23 22:21) [6]

> aha  (23.10.2010 22:10:05)  [5]

Ну так я и говорю - измерь. Например в цикле на 1000


 
Anatoly Podgoretsky ©   (2010-10-23 22:22) [7]

> aha  (23.10.2010 22:10:05)  [5]

И опять критерий хорошести какой?


 
aha   (2010-10-23 22:35) [8]

мой комп при цикле 100 тыс. разницу дает в 2 сек. с закрытием файла ,
цикл около 7 сек. , т. е. не существенно , значит лучше закрывать файл


 
Юрий Зотов ©   (2010-10-23 22:40) [9]


> aha   (23.10.10 22:10) [5]
> А такой вариант какой я задумал , насчет записи во временный
> файл , и перед завершением перепись в нужный, в соответст.
>  формате не хороший ?

А какая разница, в какой файл писать - во временный или в постоянный?


 
Anatoly Podgoretsky ©   (2010-10-23 23:28) [10]


> мой комп при цикле 100 тыс. разницу дает в 2 сек. с закрытием
> файла ,

Ну вот, теперь ты выяснил, что переоткрытия бояться не стоит.


 
aha   (2010-10-23 23:31) [11]

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


 
Юрий Зотов ©   (2010-10-24 00:11) [12]

> aha   (23.10.10 23:31) [11]

Еще раз - какая разница, в какой файл писать? Что он дает, временный файл, какой выигрыш?

Реальных преимуществ - никаких. А вот возни больше, да и вероятность потери данных увеличивается (если сбой произойдет во время их перезаписи в постоянный файл).

Путь Вас "фирменные" программы не смущают. Их пишут такие же люди. Они выбрали одно решение, Вы вправе повторить его же, или выбрать другое. Все зависит от конкретной задачи, от того, что для Вас важнее - скорость или надежность.

Я бы, скорее всего, предпочел надежность - потому что пусть лучше программа работает медленно и правильно, чем быстро и неправильно.Такая программа никому не нужна.


 
aha   (2010-10-24 00:34) [13]

----Реальных преимуществ - никаких. А вот возни больше, да и вероятность потери данных увеличивается (если сбой произойдет во время их перезаписи в постоянный файл).
так временный файл то все равно останется, сотру только после переименования.

--А вот возни больше....
Вроде бы особой возни то и нет, может я не прав, конечно.

про фирменые программы - действ. сама логика подсказывает , что сохранять надо после завершения эксперимента , то есть получения данных.Поэтому хочу переделать рабочие свои программы


 
Anatoly Podgoretsky ©   (2010-10-24 09:46) [14]

> aha  (24.10.2010 00:34:13)  [13]

А какая цель тогда в промежуточном файле, не пойму.


 
aha   (2010-10-24 10:47) [15]

подскажите тогда , я может не совсем правильно задумал.
программа запущена , запустил какой то процесс, включается при этом запись в буф. файл, а к концу процесса или при выходе из программы программа предупредит, предложит сохранить полученные данные , при этом произойдет перепись из буф. в требуемый с названием предложенным пользователем. Можно было бы и хранить данные без записи в массиве каком то , в таком случае при зависании , отключении компа данные могут быть потеряны ...


 
Anatoly Podgoretsky ©   (2010-10-24 10:50) [16]

Интересно, что можно отказаться от данных с устройств, что то тут не то.


 
sniknik ©   (2010-10-24 10:55) [17]

временный файл нужен если юзер работает с документом и нужна возможность отмены изменений, т.е. если он решил не сохранять изменения то файл остается старый.
у тебя, как понял, отмен в процессе не предусмотрено, тогда правда, в чем смысл будет у твоего временного файла? в том что так делают программы работающие в другом "стиле". а возьми лучше принцип из других, например предмодерируемых форумов...
т.е. твоя прога будет не просто делать записи, а посылать их на сервер (его сделаешь) там сохранится в базу (заведешь), после модератор (наймешь) сядет, проверит (редактор с переносом, добавишь) и занесет в основной файл то что по его мнению "правильные записи".
как тебе такой принцип для подражания? круто ведь, и другие так делают. тебе понравится, ты вижу сложности любишь...


 
aha   (2010-10-24 10:56) [18]

в варианте работающем до сих пор, где требуется предварительно выбрать файл для записи , некоторые юзеры (видимо работающие с фирм. западными программами ) забывают об этом , а после завершения данные то не сохранились.


 
Юрий Зотов ©   (2010-10-24 10:57) [19]

> aha   (24.10.10 10:47) [15]

Не понимаю - на фига буферный файл? Почему сразу в постоянный не писать?

При запуске Вашего "процесса" программма СРАЗУ спрашивает у юзера, в какой файл писать данные, а уж потом начинает этот "процесс". Куда юзер сказал - туда данные и пишутся.

Без лишних и абсолютно ненужных телодвижений.


 
aha   (2010-10-24 11:01) [20]

---Не понимаю - на фига буферный файл? Почему сразу в постоянный не писать?   у меня так и было и есть до сих пор.
Но програма должна работать на дурака , который может забыть создать файл для записи , по крайней мере так работают фирм. программы.


 
Anatoly Podgoretsky ©   (2010-10-24 11:02) [21]

> aha  (24.10.2010 10:56:18)  [18]

А надо сохранять во всех случаях.


 
aha   (2010-10-24 11:03) [22]

---Без лишних и абсолютно ненужных телодвижений.
разве сложно , перед закрытием программа запросит , не хотим ли сохранить данные . Если при этом юзер откажется , это его проблемы, программа предложила сохранить под любым именем...


 
Anatoly Podgoretsky ©   (2010-10-24 11:06) [23]

> aha  (24.10.2010 11:01:20)  [20]

Тогда не программа дура, а программист дурак.


 
aha   (2010-10-24 11:08) [24]

так примерно и ворд работает, при закрытии предлагает сохранить файл , либо по умолчанию, либо по желанию юзера


 
Anatoly Podgoretsky ©   (2010-10-24 11:14) [25]

> aha  (24.10.2010 11:08:24)  [24]

Ворд не показатель, он не работает с устройствами


 
sniknik ©   (2010-10-24 11:14) [26]

> так примерно и ворд работает
там документ, изменения вводит юзер и ему решать что с ними делать.
у тебя
> после приема данных ( данные идут периодически максимум раз в секунду )
откуда то принимаются. т.е. это не юзерские данные, это программные. а решать почему то юзеру. а если ему нас... на твою программу, он вообще к компу только сел, и тут ему какое-то окно "сохранять?".


 
aha   (2010-10-24 11:16) [27]

понимаете, заказчик диктует требования..., я может хочу по другому. Мне говорят, что должно быть наподобие фирм.программ.
---Ворд не показатель, он не работает с устройствами- а какая разница , работает с устройствами или нет . Требуется аналогия в работе ...


 
sniknik ©   (2010-10-24 11:18) [28]

> Но програма должна работать на дурака , который может забыть создать файл для записи , по крайней мере так работают фирм. программы.
какая разница в начале работы "дурак" забудет ввести имя файла, или в конце? если программа должна работать, зависеть от запроса имени не должно. должно само "обзывать".


 
aha   (2010-10-24 11:20) [29]

может не совсем я прально обьясняю
пример - студент снимает ВАХ какой либо цепи .Нажимает кнопку пуск - процесс пошел  , с ацп данные поступают в комп. процесс прошел, пора сохранить данные , нажимает кнопочку сохранить и данные с моего буф. файла перепишутся в требуемый его названию файл.
Теперь сам начал сомневаться надо ли все это делать ... :-)


 
sniknik ©   (2010-10-24 11:23) [30]

> понимаете, заказчик диктует требования...
заказчик в 99% случаев не понимает что хочет, и дает либо противоречивые либо деструктивные требования...

> Требуется аналогия в работе ...
по ветке как то сложилось мнение, что это твоя идея... ты сам заказчик? избавляйся от этого, не понимать (см. 1 абзац), что делаешь очень плохо.


 
Anatoly Podgoretsky ©   (2010-10-24 11:26) [31]

> aha  (24.10.2010 11:16:27)  [27]

Назови хоть одну фирменную программу данного типа, в программах подобного
везде имя задает программа, а не пользователь.


 
sniknik ©   (2010-10-24 11:26) [32]

> пример - студент снимает ВАХ какой либо цепи . ...
другое дело, юзер сам снимает данные, и контролирует завершение/сохранение. т.е. это юзерские данные.


 
sniknik ©   (2010-10-24 11:27) [33]

> Назови хоть одну фирменную программу данного типа
HyperTerminal
снятие лога протокола работы с модемом.


 
Anatoly Podgoretsky ©   (2010-10-24 11:28) [34]

> aha  (24.10.2010 11:20:29)  [29]

Смени идеологию - назови кнопку не "Сохранить", а "Прекратить" запись.
По крайней мере так рекордеры видео работают.
Видимо ты никогда не видал программ работы с устройствами,


 
Anatoly Podgoretsky ©   (2010-10-24 11:29) [35]

> sniknik  (24.10.2010 11:23:30)  [30]

Ага, а нам просто лапшу на уши вешает.


 
Anatoly Podgoretsky ©   (2010-10-24 11:30) [36]

> sniknik  (24.10.2010 11:26:32)  [32]

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


 
Anatoly Podgoretsky ©   (2010-10-24 11:33) [37]

Я знаю много коммуникационных программ, обычно там можно только выразить желание, остальное дело программы.


 
sniknik ©   (2010-10-24 11:37) [38]

ну в общем в гипертерминале тоже нельзя, насколько помню, там было просто "включить логирование" и протокол отражался в мемо на экране, но при желании его можно было сохранить куда то, и вот этот файл уже указывался. (не помню точно, последний диалап модем в 98г был...)
после
aha   (24.10.10 11:20) [29]
похоже у него примерный аналог.


 
aha   (2010-10-24 11:45) [39]

смысл не в том , что программа или пользователь дает название , я имел ввиду момент сохранения файла. ДО сих пор программы, написанные мной, в начале предлагают создать файл для записи, программа дает по умолчанию свое название , пользователь может сменить на свое .процесс прошел , данные сохранились.
Теперь я хочу сделать так , но программа не будет просить сохранить данные в начале ,а после завершения процесса , попросить сохранить - вся разница в этом..


 
Юрий Зотов ©   (2010-10-24 12:11) [40]

> aha   (24.10.10 11:01) [20]
> програма должна работать на дурака , который может забыть создать
> файл для записи


НЕ СМОЖЕТ!!! ДАЖЕ ДУРАК НЕ СМОЖЕТ!!! ФИЗИЧЕСКИ НЕ СМОЖЕТ!!! В ТОМ-ТО ВСЕ И ДЕЛО!!!

Вы [19] читали? Программа СНАЧАЛА спрашивает у юзера, в какой файл писать данные, и только ПОТОМ начинает их запись. Если юзер не указал файл, запись просто не запускается.

Блин! Что может быть проще?

procedure TForm1.StartButtonClick(Sender: TObject);
begin
 if OpenDialog1.Execute then
 try
   ... // Проверить доступность файла для записи
 except
   ... // Выдать сообщение об ошибке
   Exit;
 end;
 StartButton.Enabled := False;
 ... // Запустить поток записи данных
end;


> aha   (24.10.10 11:08) [24]
> так примерно и ворд работает


И что происходит с вордом при отключении питания? Вы разве ЭТОГО хотите?



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.01.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.004 c
15-1285078090
Alkid
2010-09-21 18:08
2011.01.16
Привет с солнечного Кипра


2-1287918930
Анна
2010-10-24 15:15
2011.01.16
многопоточная организация в Делфи


15-1286051355
Юрий
2010-10-03 00:29
2011.01.16
С днем рождения ! 3 октября 2010 воскресенье


2-1287766980
volkafff
2010-10-22 21:03
2011.01.16
Обращение ко всем записям.


15-1285835897
Kerk
2010-09-30 12:38
2011.01.16
Подскажите компонент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский