Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
14-93649
vidiv
2004-01-08 13:55
2004.01.29
По поводу форумов


6-93615
SkyN
2003-11-24 11:17
2004.01.29
как по имени сетевого диска (например i: ) получить имя куда он с


1-93577
новичок_из_сыктывкара
2004-01-17 07:18
2004.01.29
надо сделать дерганье мышки за пределами главной формы


7-93702
msgipss
2003-11-14 11:17
2004.01.29
Как программно настроить аудит на конкретный файл


1-93441
Наиль
2004-01-16 13:36
2004.01.29
определение координат курсора мыши