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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 15:43   #11
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Конечно можно написать класс с доступом к любому байту, вставке и тд., но для этого придется прибегать к копированиям в др поток, и в конечном итоге, при изменении потока, он будет сохранятся весь.
Просто я пишу СУБД, и мне нужно быстродействие, конечно, при размере файла 10 мб быстродействие будет удовлетворительным, а если 100 мб? При каждом запросе изменения данных, база будет занова переписываться...
Сам не могу понять почему Win API не может предоставить обращение к файлу как к массиву... А то только WriteFile, ReadFile, SeekFile и т. д.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 26.12.2010, 15:57   #12
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сам не могу понять почему Win API не может предоставить обращение к файлу как к массиву... А то только WriteFile, ReadFile, SeekFile и т. д.
Я говорил вам, потому что вы не точно понимаете как устроено все на жестком диске в итоге, как хранится файл. Если все таки нужен именно "массив", можно использовать отображение файлов в память (MapViewOfFile и др.) Таким образом можно будет обращаться к файлу как к куску памяти, причем чтение и запись будет производится в файл автоматически, в то время как вы просто указываете значения по определенному смещению (адресу) относительно полученного адреса после отображения файла.

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

На счет изменения данных, тут явно подходит Seek + Write. Куда надо переместились по файлу, записали сколько надо, вот вам и изменение.

Последний раз редактировалось BOBAH13; 26.12.2010 в 15:59.
BOBAH13 вне форума Ответить с цитированием
Старый 26.12.2010, 19:02   #13
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Да, именно про отображение файла в память я и подумал, получу Pointer, и буду работать с памятью.

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

Последний раз редактировалось chertovich; 26.12.2010 в 19:06.
chertovich вне форума Ответить с цитированием
Старый 26.12.2010, 19:05   #14
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от chertovich Посмотреть сообщение
Да, именно про отображение файла в память я и подумал, получу Point, и буду работать как с памятью
Простите что? Я не пойму, вы как бы разобрались с вопросом, а то вы о чем то о своем говорите. Видимо что дальше было написано, вы не читали.

UPD:
Цитата:
Просто прочитал в книге про отображение файла в память и поэтому говорю, что я так и подумал. Как всегда, получаю помощь тогда, когда она уже не нужна)
О чем говорилось ранее, какой вопрос - такой ответ. Во благодарные люди пошли. Так в следующий раз и не помогут. Я прям таки что не напишу, так вы это уже читали и разобрались, удивительно.

Последний раз редактировалось BOBAH13; 26.12.2010 в 19:35.
BOBAH13 вне форума Ответить с цитированием
Старый 26.12.2010, 19:13   #15
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление скрипта и изменение его параметров J-Max JavaScript, Ajax 4 14.12.2010 16:21
Как узнать номер потока из самого потока? GaMeSTeR Помощь студентам 0 03.12.2010 09:50
Изменение данных и перенос данных из одной таб в другую Kot9ra Microsoft Office Access 13 02.07.2010 12:22
Извлечение данных из потока bug Общие вопросы Delphi 11 05.10.2009 14:34
как в ХР запретить установку и удаление програм и изменение параметров дисплея? Dinya Безопасность, Шифрование 2 21.12.2008 21:30