Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с кластерами ЖД посредством процедур и функций 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 не знаю - возможно там все иначе). Возможно лучшим решением в твоем случае будет база данных. Там такие вещи специально оптимизируются.


Наверх

Титульная страница Поиск, карта сайта Написать письмо