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

Вниз

Как хранить образ файла в памяти?   Найти похожие ветки 

 
TankMan   (2003-12-22 20:02) [0]

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


 
panov   (2003-12-22 20:23) [1]

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


 
ЮЮ   (2003-12-23 07:32) [2]

>прообразом которого стал TIniFile
>расшифрует его и не успеет зашифровать

Сделай прообразом TMemIniFile и храни его в памяти. :-)Расшифровывай один раз при считывании с диска а шифруй один раз при сохранении.


 
TUser   (2003-12-23 07:39) [3]

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


 
TankMan   (2003-12-24 23:23) [4]

>>panov
Изменяются они очень часто - несколько раз в секунду...

>>ЮЮ
Дело в том что компонент не прямой прообраз, а полностью написаный с нуля новый компонент, только я некоторые моменты смотрел в TIniFile-е и концепции основные... а с TMemIniFile-ом я не знаком...как-то.. надо будет посмотреть еще...

>>TUser
Файл, я пологаю не должен будет превышать... мегабат 5-10... да уж если не каждую секунду, то каждую 2-ю секунду... а если вдруг перебои питания, то последнее обновление будет 2х секундной давности- а это не так страшно, как полностью расшифрованный файл...


 
ЮЮ   (2003-12-25 04:09) [5]

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


 
TankMan   (2003-12-30 17:28) [6]

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


 
TankMan   (2004-01-05 22:16) [7]

Значит мне ничем нельзя помочь?


 
Рамиль   (2004-01-05 22:30) [8]


> в начале этой процедуры файл на диске расшифровывается,
> потом считывается инфа и потом обратно зашифровывается,

А структуру тоже необходимо зашифровывать что ли? Что мешает шифровать только параметры и их значения?


 
Dima_dvp   (2004-01-05 23:44) [9]

100% Это надуманная необходимость сохранять расшифрованный вариант на диске.. В чём прок? Для каких целей? Уверен что ты ошибся при планировании приложения....


 
raidan   (2004-01-05 23:59) [10]


> Dima_dvp

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


 
TankMan   (2004-01-07 22:52) [11]

В том то и дело, что в массиве хранить эту информацию совсем не удобно...:(...


 
TankMan   (2004-01-07 22:54) [12]

А как хранить ее в другом виде в памяти я незнаю еще пока...


 
TankMan   (2004-01-15 22:40) [13]

Все.. вобщем я благодарен всем... а в частности ЮЮ
так как без него я бы и не заметил такого компонента как Meminifile %) сейчас переделал свой компонент и он как я заметил стал работать в 9 раз быстрее :) спасиба еще раз



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

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

Наверх




Память: 0.48 MB
Время: 0.008 c
3-93349
Jane
2004-01-02 18:23
2004.01.29
В DBGrid не отображается знаечние поля.


1-93459
zioza
2004-01-15 11:34
2004.01.29
Написание верхних и нижних индексов в тексте


14-93699
Amigo Sv
2004-01-08 09:29
2004.01.29
Поиск записи в таблице


3-93391
Andriy Tysh
2003-12-30 11:16
2004.01.29
DBGridEh.SumList


7-93712
dron
2003-11-12 12:47
2004.01.29
Как программно создать переменную окружения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский