Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизРабота с кластерами ЖД посредством процедур и функций Delphi Найти похожие ветки
← →
Master Kolyan (2004-09-11 14:17) [0]Я хотел бы узнать какие такие средства есть в Delphi для работы с кластерами на винчестере??? Главная задача состоит в том, чтобы организовать ускоренную работу с файлами большого (~ >100MB) размера. Допустим добавление кучи данных в середину файла со сдвигом имеющихся данных, удаление такой же кучи и пр.
Есть один очень хороший способ, но для него нужно знать как в кластере файла изменять указатели на следующий и предыдущий кластеры???
Пожалуйста!!!
...
Заранее Спасибо!!!
← →
Jel © (2004-09-11 18:25) [1]Delphi не имеет средств для низкоуровневой работы с дисками. WinAPI может помочь, но делать этого категорически не рекомендую. В самих кластерах никаких указателей не хранится, вся информация о размещении файла на диске содержится в FAT (по крайней мере в FAT и FAT32, в NTFS не знаю - возможно там все иначе). Возможно лучшим решением в твоем случае будет база данных. Там такие вещи специально оптимизируются.
← →
Alekc (2004-09-11 18:32) [2]WinAPI тут и не пахнет... а пахнет драйверочками-с собственными-с...
← →
Jel © (2004-09-11 18:46) [3]
> 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.
← →
Master Kolyan (2004-09-11 20:21) [4]Вообще то мне надо организовать виртуальную память для своей программы, большая часть которой вообще использоваться не будет... А на счёт баз данных: как-то это всё не рационально. Лучше будет разобраться в детальной структуре базы данных и переписать её как положено, и убрать всё лишнее, чего будет очень много...
← →
Jel © (2004-09-11 20:26) [5]
> мне надо организовать виртуальную память для своей программы
Она уже организована средствами системы и довольно неплохо работает. :) Зачем изобретать велосипед? Или есть какие-нибудь специфические требования?
Изложи эадачу подробнее, тогда можно будет посоветовать разумное решение.
← →
Master Kolyan (2004-09-11 20:43) [6]после перезагрузки компа виртуальная память Windows куда-то девается. А моя должна оставаться: это не просто виртуальная память - это особый способ хранения данных или ресурсов программы, причем очень быстрый и универсальный...
← →
Master Kolyan (2004-09-11 20:46) [7]Все данные и ресурсы могут храниться в одном файле, и я смогу брать данные с ЖД так же легко и просто как с ОЗУ
← →
Master Kolyan (2004-09-11 20:49) [8]в фаиловую систему лезть как-то не хочется, много их блин развелос, завтра глядишь еще одна, а я ещё с первой не закончил...
← →
Jel © (2004-09-11 21:15) [9]ОК. Как вариант - почему бы не создать один файл с известной тебе структурой не заморачиваясь на особенности реализации файловой системы и в нем реализовать цепочку блоков (аналог цепочки кластеров из первого поста). Доступ к содержимому организовать путем отображения этого файла в адресное пространство процесса (MapViewOfFile).
Только в результате ИМХО все равно изобретешь аналог файловой системы.
Или можно просто хранить данные в псевдоархивах (без сжатия) как это делают практически все игрушки.
← →
Arm79 (2004-09-12 00:35) [10]CreateFileMapping?
← →
Master Kolyan (2004-09-12 06:39) [11]>[9] чо ещё за псевдоархивы, скока интересно надо времени потратить, чтобы туда хоть один новый байт внедрить?
А Windows не будет ругаться, что в мой файл построен на какой-то другой файловой системе?
>[9] MapViewOfFile это от кедава функция? Может там ещё какие-нибудь полезные функции есть.
>[10]>CreateFileMapping?
Это чо...
← →
Master Kolyan (2004-09-12 06:44) [12]>[9] чо-то я непонял, а файл-то какого размера будет, не будет ли он забивать лишнее место на диске?
← →
Jel © (2004-09-12 08:50) [13]
> чо ещё за псевдоархивы
Это упаковка нескольких файлов в один. Если критично время - их можно не сжимать.
> А Windows не будет ругаться, что в мой файл построен на
> какой-то другой файловой системе?
Если ты ей об этом не скажешь, то и не заметит. :)
> MapViewOfFile это от кедава функция?
> CreateFileMapping?
Это из WinAPI и полезного там - целая гора. :)
> чо-то я непонял, а файл-то какого размера будет
А вот тут все зависит от тебя.
PS Мой совет - не занимайся ерундой, изобретая суперпроизводительную Swap систему в которой еще и данные хранить можно. Судя по твоим вопросам пока тебе этого не осилить, а можем и в орешник загреметь. :)
← →
Master Kolyan (2004-09-12 10:52) [14]>Судя по твоим вопросам пока тебе этого не осилить...
Я просто не разбираюсь в WinAPI и в файловых системах, а вот по всякого рода алгоритмах я мастер так сказать, так что если разобраться во всем и мозгами разбросать может чо полезное и слепится...
← →
Master Kolyan (2004-09-12 10:55) [15]может кто-нить мне какую-нить хорошую литературу порекомендует по WinAPI.
← →
RQQT (2004-09-12 12:29) [16]>может кто-нить мне какую-нить хорошую литературу порекомендует по WinAPI...
В Delphi"и, вобщем-то, неплохие подсказки по WinAPI (закладка в хелпе и вообще там много чего интересного). Бывают, правда на Си, но разбираемо. Там и CreateFileMapping и MapViewOfFile найдешь.
>Я просто не разбираюсь в WinAPI ...
Нужно, т.к. с Windows работаем.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.043 c