Current time: 20.06.2024, 18:29 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Новая реализация виртуальной файловой системы
» Тестирование
Author Message
Berserker Offline
Administrators

Posts: 16529
Post: #30

Если кому из программистов интересно пощупать, то вот библиотека:
Скачать 150 КБ

Все экспортируемые функции работают по соглашению STDCALL. Если в конце имени нет суффикса A (Ansi), то с UCS16-строками (L"строка" в C++).
Если с суффиксом А, то с Ansi-строками.

Примеры использования:
// Отображаем все моды из папки Mods и присутствующие в list.txt на корневую папку с игрой
MapModsFromListA('D:\Heroes 3', 'D:\Heroes 3\Mods', 'D:\Heroes 3\Mods\list.txt')

// Запускаем VFS
VfsControl.RunVfs(0); // 0 - SORT_FIFO, содержимое папок более приоритетных модов будет выводиться ДО менее приоритетных

// Читаю файл из Феникса по виртуальному пути:
ReadFileContents('D:\Heroes 3\Data\s\pHoenix.erm', s);

API:

Code:
(* Maps real directory contents to virtual path. Target must exist for success *)
function MapDir (const VirtPath, RealPath: PWideChar; OverwriteExisting: boolean; Flags: integer = 0): LONGBOOL; stdcall;

(* Maps real directory contents to virtual path. Target must exist for success *)
function MapDirA (const VirtPath, RealPath: PAnsiChar; OverwriteExisting: boolean; Flags: integer = 0): LONGBOOL; stdcall;

(* Loads mod list from file and maps each mod directory to specified root directory.
   File with mod list is treated as (BOM or BOM-less) UTF-8 plain text file, where each mod name is separated
   from another one via Line Feed (#10) character. Each mod named is trimmed, converted to UCS16 and validated before
   adding to list. Invalid or empty mods will be skipped.
   Returns true if root and mods directory existed and file with mod list was loaded successfully *)
function MapModsFromList (const RootDir, ModsDir, ModListFile: PWideChar; Flags: integer = 0): LONGBOOL; stdcall;

(* Loads mod list from file and maps each mod directory to specified root directory.
   File with mod list is treated as (BOM or BOM-less) UTF-8 plain text file, where each mod name is separated
   from another one via Line Feed (#10) character. Each mod named is trimmed, converted to UCS16 and validated before
   adding to list. Invalid or empty mods will be skipped.
   Returns true if root and mods directory existed and file with mod list was loaded successfully *)
function MapModsFromListA (const RootDir, ModsDir, ModListFile: PAnsiChar; Flags: integer = 0): LONGBOOL; stdcall;

(* Runs all VFS subsystems, unless VFS is already running *)
function RunVfs (DirListingOrder: TDirListingSortType): LONGBOOL;

(* Temporarily pauses VFS, but does not reset existing mappings *)
function PauseVfs: LONGBOOL; stdcall;

(* Stops VFS and clears all mappings *)
function ResetVfs: LONGBOOL; stdcall;

(* Calls specified function with a single argument and returns its result. VFS is disabled for current thread during function exection *)
function CallWithoutVfs (Func: TSingleArgExternalFunc; Arg: pointer = nil): integer; stdcall;

(*
  Specifies the order, in which files from different mapped directories will be listed in virtual directory.
  Virtual directory sorting is performed by priorities firstly and lexicographically secondly.
  SORT_FIFO - Items of the first mapped directory will be listed before the second mapped directory items.
  SORT_LIFO - Items of The last mapped directory will be listed before all other mapped directory items.
*)
TDirListingSortType = (SORT_FIFO = 0, SORT_LIFO = 1);


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
14.05.2019 19:47
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Messages In This Thread
Новая реализация виртуальной файловой системы - Berserker - 09.05.2019, 01:27
RE: Новая реализация виртуальной файловой системы - Algor - 09.05.2019, 02:26
RE: Новая реализация виртуальной файловой системы - fireman - 09.05.2019, 05:43
RE: Новая реализация виртуальной файловой системы - daemon_n - 09.05.2019, 08:22
RE: Новая реализация виртуальной файловой системы - wessonsm - 09.05.2019, 10:12
RE: Новая реализация виртуальной файловой системы - daemon_n - 09.05.2019, 13:29
RE: Новая реализация виртуальной файловой системы - PerryR - 09.05.2019, 10:19
RE: Новая реализация виртуальной файловой системы - Elmore - 09.05.2019, 14:25
RE: Новая реализация виртуальной файловой системы - Berserker - 09.05.2019, 15:20
RE: Новая реализация виртуальной файловой системы - wessonsm - 09.05.2019, 19:16
RE: Новая реализация виртуальной файловой системы - igrik - 09.05.2019, 15:31
RE: Новая реализация виртуальной файловой системы - XEPOMAHT - 09.05.2019, 16:04
RE: Новая реализация виртуальной файловой системы - Algor - 09.05.2019, 18:37
RE: Новая реализация виртуальной файловой системы - daemon_n - 09.05.2019, 20:02
RE: Новая реализация виртуальной файловой системы - Berserker - 09.05.2019, 22:45
RE: Новая реализация виртуальной файловой системы - Algor - 10.05.2019, 14:23
RE: Новая реализация виртуальной файловой системы - igrik - 10.05.2019, 14:05
RE: Новая реализация виртуальной файловой системы - Berserker - 10.05.2019, 17:36
RE: Новая реализация виртуальной файловой системы - igrik - 11.05.2019, 03:28
RE: Новая реализация виртуальной файловой системы - igrik - 10.05.2019, 18:16
RE: Новая реализация виртуальной файловой системы - Berserker - 11.05.2019, 03:08
RE: Новая реализация виртуальной файловой системы - Berserker - 11.05.2019, 04:44
RE: Новая реализация виртуальной файловой системы - Berserker - 11.05.2019, 17:45
RE: Новая реализация виртуальной файловой системы - Berserker - 12.05.2019, 02:57
RE: Новая реализация виртуальной файловой системы - SyDr - 12.05.2019, 11:30
RE: Новая реализация виртуальной файловой системы - Berserker - 12.05.2019, 14:14
RE: Новая реализация виртуальной файловой системы - Berserker - 12.05.2019, 15:42
RE: Новая реализация виртуальной файловой системы - SyDr - 12.05.2019, 20:06
RE: Новая реализация виртуальной файловой системы - Berserker - 13.05.2019, 01:32
RE: Новая реализация виртуальной файловой системы - Berserker - 14.05.2019 19:47
RE: Новая реализация виртуальной файловой системы - wessonsm - 15.05.2019, 07:54
RE: Новая реализация виртуальной файловой системы - Berserker - 15.05.2019, 14:51
RE: Новая реализация виртуальной файловой системы - AlexeevAV - 22.05.2019, 11:46
RE: Новая реализация виртуальной файловой системы - Berserker - 22.05.2019, 14:48
RE: Новая реализация виртуальной файловой системы - Berserker - 24.05.2019, 14:28
RE: Новая реализация виртуальной файловой системы - Berserker - 25.05.2019, 19:22
RE: Новая реализация виртуальной файловой системы - daemon_n - 25.05.2019, 21:01
RE: Новая реализация виртуальной файловой системы - Berserker - 25.05.2019, 21:42
RE: Новая реализация виртуальной файловой системы - Berserker - 25.05.2019, 23:00
RE: Новая реализация виртуальной файловой системы - Berserker - 26.05.2019, 15:54
RE: Новая реализация виртуальной файловой системы - Berserker - 26.05.2019, 17:09
RE: Новая реализация виртуальной файловой системы - Berserker - 26.05.2019, 17:21
RE: Новая реализация виртуальной файловой системы - daemon_n - 26.05.2019, 19:56
RE: Новая реализация виртуальной файловой системы - Berserker - 26.05.2019, 20:29
RE: Новая реализация виртуальной файловой системы - RDV - 02.12.2019, 19:54
RE: Новая реализация виртуальной файловой системы - Berserker - 02.12.2019, 20:56
RE: Новая реализация виртуальной файловой системы - RDV - 02.12.2019, 21:14
RE: Новая реализация виртуальной файловой системы - Berserker - 02.12.2019, 21:33
RE: Новая реализация виртуальной файловой системы - XEPOMAHT - 22.11.2021, 13:57
RE: Новая реализация виртуальной файловой системы - Berserker - 22.11.2021, 15:47
RE: Новая реализация виртуальной файловой системы - RoseKavalier - 22.11.2021, 16:28

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group