Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Работа с кластерами ЖД посредством процедур и функций 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 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.031 c
8-1090855559
asat
2004-07-26 19:25
2004.10.17
Graphics32


1-1097041909
Jay
2004-10-06 09:51
2004.10.17
StaticText


1-1095921332
-=RuSSt=-
2004-09-23 10:35
2004.10.17
перейти на строку в Memo


4-1095219660
Настенька
2004-09-15 07:41
2004.10.17
кнопка Пуск


3-1095403625
vero
2004-09-17 10:47
2004.10.17
знаковость Real types