Форум: "Основная";
Текущий архив: 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