![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с кластерами ЖД посредством процедур и функций Delphi [D5, D6, D7, Win95/98, Win2k, WinXP]
Master Kolyan © (2004-09-11 14:17:00)Я хотел бы узнать какие такие средства есть в Delphi для работы с кластерами на винчестере??? Главная задача состоит в том, чтобы организовать ускоренную работу с файлами большого (~ >100MB) размера. Допустим добавление кучи данных в середину файла со сдвигом имеющихся данных, удаление такой же кучи и пр.
Есть один очень хороший способ, но для него нужно знать как в кластере файла изменять указатели на следующий и предыдущий кластеры???
Пожалуйста!!!
...
Заранее Спасибо!!!
RQQT (2004-09-12 12:29:00) [1]>может кто-нить мне какую-нить хорошую литературу порекомендует по WinAPI...
В Delphi'и, вобщем-то, неплохие подсказки по WinAPI (закладка в хелпе и вообще там много чего интересного). Бывают, правда на Си, но разбираемо. Там и CreateFileMapping и MapViewOfFile найдешь.
>Я просто не разбираюсь в WinAPI ...
Нужно, т.к. с Windows работаем.
Master Kolyan (2004-09-12 10:55:00) [2]может кто-нить мне какую-нить хорошую литературу порекомендует по WinAPI.
Master Kolyan (2004-09-12 10:52:00) [3]>Судя по твоим вопросам пока тебе этого не осилить...
Я просто не разбираюсь в WinAPI и в файловых системах, а вот по всякого рода алгоритмах я мастер так сказать, так что если разобраться во всем и мозгами разбросать может чо полезное и слепится...
Jel (2004-09-12 08:50:00) [4]
> чо ещё за псевдоархивы
Это упаковка нескольких файлов в один. Если критично время - их можно не сжимать.
> А Windows не будет ругаться, что в мой файл построен на
> какой-то другой файловой системе?
Если ты ей об этом не скажешь, то и не заметит. :)
> MapViewOfFile это от кедава функция?
> CreateFileMapping?
Это из WinAPI и полезного там - целая гора. :)
> чо-то я непонял, а файл-то какого размера будет
А вот тут все зависит от тебя.
PS Мой совет - не занимайся ерундой, изобретая суперпроизводительную Swap систему в которой еще и данные хранить можно. Судя по твоим вопросам пока тебе этого не осилить, а можем и в орешник загреметь. :)
Master Kolyan (2004-09-12 06:44:00) [5]>[9] чо-то я непонял, а файл-то какого размера будет, не будет ли он забивать лишнее место на диске?
Master Kolyan (2004-09-12 06:39:00) [6]>[9] чо ещё за псевдоархивы, скока интересно надо времени потратить, чтобы туда хоть один новый байт внедрить?
А Windows не будет ругаться, что в мой файл построен на какой-то другой файловой системе?
>[9] MapViewOfFile это от кедава функция? Может там ещё какие-нибудь полезные функции есть.
>[10]>CreateFileMapping?
Это чо...
Arm79 (2004-09-12 00:35:00) [7]CreateFileMapping?
Jel (2004-09-11 21:15:00) [8]ОК. Как вариант - почему бы не создать один файл с известной тебе структурой не заморачиваясь на особенности реализации файловой системы и в нем реализовать цепочку блоков (аналог цепочки кластеров из первого поста). Доступ к содержимому организовать путем отображения этого файла в адресное пространство процесса (MapViewOfFile).
Только в результате ИМХО все равно изобретешь аналог файловой системы.
Или можно просто хранить данные в псевдоархивах (без сжатия) как это делают практически все игрушки.
Master Kolyan (2004-09-11 20:49:00) [9]в фаиловую систему лезть как-то не хочется, много их блин развелос, завтра глядишь еще одна, а я ещё с первой не закончил...
Master Kolyan (2004-09-11 20:46:00) [10]Все данные и ресурсы могут храниться в одном файле, и я смогу брать данные с ЖД так же легко и просто как с ОЗУ
Master Kolyan (2004-09-11 20:43:00) [11]после перезагрузки компа виртуальная память Windows куда-то девается. А моя должна оставаться: это не просто виртуальная память - это особый способ хранения данных или ресурсов программы, причем очень быстрый и универсальный...
Jel (2004-09-11 20:26:00) [12]
> мне надо организовать виртуальную память для своей программы
Она уже организована средствами системы и довольно неплохо работает. :) Зачем изобретать велосипед? Или есть какие-нибудь специфические требования?
Изложи эадачу подробнее, тогда можно будет посоветовать разумное решение.
Master Kolyan (2004-09-11 20:21:00) [13]Вообще то мне надо организовать виртуальную память для своей программы, большая часть которой вообще использоваться не будет... А на счёт баз данных: как-то это всё не рационально. Лучше будет разобраться в детальной структуре базы данных и переписать её как положено, и убрать всё лишнее, чего будет очень много...
Jel (2004-09-11 18:46:00) [14]
> WinAPI тут и не пахнет
HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file
DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes
DWORD dwCreationDistribution, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to file with attributes to copy
);
Parameters
lpFileName
Points to a null-terminated string that specifies the name of the object (file, pipe, mailslot, communications resource, disk device, console, or directory) to create or open.
Alekc (2004-09-11 18:32:00) [15]WinAPI тут и не пахнет... а пахнет драйверочками-с собственными-с...
Jel (2004-09-11 18:25:00) [16]Delphi не имеет средств для низкоуровневой работы с дисками. WinAPI может помочь, но делать этого категорически не рекомендую. В самих кластерах никаких указателей не хранится, вся информация о размещении файла на диске содержится в FAT (по крайней мере в FAT и FAT32, в NTFS не знаю - возможно там все иначе). Возможно лучшим решением в твоем случае будет база данных. Там такие вещи специально оптимизируются.