Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-1096018985
tiam
2004-09-24 13:43
2004.10.17
Возврат долга


6-1091796139
galexis
2004-08-06 16:42
2004.10.17
требуется программка позволяющая вручную создавать IP пакеты


4-1095169575
ipnet
2004-09-14 17:46
2004.10.17
Запись значения REG_SZ в реестр под XP


1-1096366533
Muhsin
2004-09-28 14:15
2004.10.17
После компиляции на другой компьютер не работает.


1-1096532602
awp
2004-09-30 12:23
2004.10.17
Invalid Pointer Operation при вызове DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский