⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.htm

📁 MDEngine2plus游戏开发库! 用来开发游戏超级简单!
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>

<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>MD File</title>
<style>
<!--
code         { font-family: Fixedsys; font-size: 12pt }
body         { font-family: Fixedsys; font-size: 12pt }
-->
</style>
</head>

<body>

<p align="center">MD File&nbsp;&nbsp; (MDEngine文件系统组件)</p>
<p align="left">版本:2.0.1</p>
<p align="left">支持平台:Microsoft Windows system&nbsp; VC++6</p>
<p align="left">简介:</p>
<p align="left">MDFile是一款使用方便、易于扩展的文件系统库,其扩展性体现在两个方面:<br>
1.MDFile内部的<a href="#epk">epk(extendable package)</a>文件格式的压缩编码方案通过edl(encoding/decoding 
library)插件可以扩展<br>
2.MDFile支持的压缩包文件可扩展。默认的,MDFile只能打开后缀为.epk的文件格式,通过dll插件的扩展,可以支持zip,cab,rar,ace,lzh.....格式,只要有相应的插件库(FileProvider)就可以了。<br>
 </p>
<p align="left">特点:</p>
<ul>
  <li>
  <p align="left">使用简单</li>
  <li>
  <p align="left">可扩展,通过edl或者epk方式扩展</li>
  <li>
  <p align="left">支持外部检索(loss file)特性</li>
  <li>
  <p align="left">epk格式安全性高,使用高效加密方案加密,保护数据的安全性</li>
  <li>
  <p align="left">epk格式支持目录存储结构</li>
  <li>
  <p align="left">epk格式支持单包多编码存储方式,能更有效压缩数据</li>
</ul>
<p align="left"> </p>
<p align="left">约定、术语:</p>
<ul>
  <li>
  <p align="left"><a name="epk"></a>Extendable Package : 
  可扩展压缩包,在这类压缩包文件中每个文件的编码方式可以不同,从而得到该文件最合适的一种编码方案。</li>
  <li>
  <p align="left">edl : Encoding/Decoding Library 编码/解码库,一个Dll文件。负责编码、解码数据</li>
  <li>
  <p align="left">FileProvider : 一个dll文件,通过它可以使MDFile支持各种文件包格式,如zip,cab,rar等</li>
  <li>
  <p align="left"><a name="fpak"></a>文件包 : 
  将多个文件用某种结构组织起来存储成一个文件,这个文件常称为文件包(如.zip文件)</li>
  <li>
  <p align="left">压缩包 : 等价于文件包。</li>
  <li>
  <p align="left">定位 : 在压缩包中,我们通过定位来通知系统我们要操作包中的哪个文件。</li>
</ul>
<p align="left"> </p>
<p align="left">函数接口:</p>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#C0C0C0" width="100%" id="AutoNumber2">
  <tr>
    <td width="24%">CMD_File()</td>
    <td width="76%">初始化一个CMD_File的实例。</td>
  </tr>
  <tr>
    <td width="24%">CMD_File(char *)</td>
    <td width="76%">初始化一个CMD_File的实例,同时挂接到一个外部FileProvider。</td>
  </tr>
</table>
<p> </p>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#C0C0C0" width="100%" id="AutoNumber1" height="184">
  <tr>
    <td width="9%" align="center" height="16">void</td>
    <td width="37%" height="16"><a href="#EnableShowErrorMSG">EnableErrMSG</a>(bool)</td>
    <td width="54%" height="16">允许或者禁止弹出错误信息窗口</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="16">bool</td>
    <td width="37%" height="16"><a href="#GetErrorCode">GetErrCode</a>()</td>
    <td width="54%" height="16">得到最近一次错误代码</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="16">void</td>
    <td width="37%" height="16"><a href="#EnableExtraFileFolder">
    EnableExt</a>(bool)</td>
    <td width="54%" height="16">允许或者禁止外部检索</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="16">void</td>
    <td width="37%" height="16"><a href="#SetExtFilePath">SetExt</a>(char 
    *)</td>
    <td width="54%" height="16">设置外部检索路径</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="16">bool</td>
    <td width="37%" height="16"><a href="#ConnectFileProvider">
    ConnectProvider</a>(char *)</td>
    <td width="54%" height="16">联接到外部FileProvider</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="16">void</td>
    <td width="37%" height="16"><a href="#FreeProvider">FreeProvider</a>()</td>
    <td width="54%" height="16">释放已经联接到的外部FileProvider</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="16">bool</td>
    <td width="37%" height="16"><a href="#Open">Open</a>(char*,bool,bool,char *)</td>
    <td width="54%" height="16">打开一个文件</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="16">void</td>
    <td width="37%" height="16"><a href="#Close">Close</a>()</td>
    <td width="54%" height="16">关闭已经打开的文件</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="8">bool</td>
    <td width="37%" height="8"><a href="#LocateFile">Locate</a>(char *,char 
    *)</td>
    <td width="54%" height="8">定位一个文件</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="8">DWORD</td>
    <td width="37%" height="8"><a href="#GetFileSize">GetLength</a>()</td>
    <td width="54%" height="8">普通文件:取得当前打开的文件的长度。<br>
    文件包:&nbsp; 当前被定位的文件长度。</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="14">bool</td>
    <td width="37%" height="14"><a href="#Read">Read</a>(LPBYTE *,DWORD)</td>
    <td width="54%" height="14">读取当前文件数据到缓冲</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="4">bool</td>
    <td width="37%" height="4"><a href="#Write">Write</a>(LPCVOID,DWORD)</td>
    <td width="54%" height="4">写数据到当前文件中</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="4">bool</td>
    <td width="37%" height="4"><a href="#Seek">Seek</a>(long,BYTE)</td>
    <td width="54%" height="4">移动当前文件指针</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="4">LPBYTE</td>
    <td width="37%" height="4"><a href="#GetBuffer">GetBuffer</a>()</td>
    <td width="54%" height="4">取得文件数据缓冲</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="2">DWORD</td>
    <td width="37%" height="2"><a href="#GetBufferLen">GetBufferLength</a>()</td>
    <td width="54%" height="2">取得文件数据缓冲长度</td>
  </tr>
  <tr>
    <td width="9%" align="center" height="2">bool</td>
    <td width="37%" height="2"><a href="#WriteBufferToFile">WriteBufferToFile</a>(char 
    *)</td>
    <td width="54%" height="2">将缓冲区数据写入文件</td>
  </tr>
</table>
<p> </p>
<hr>
<p>void <a name="EnableShowErrorMSG"></a>EnableErrMSG(bool bshowerr)</p>
<p>入口参数:bool bshowerror(true|false)<br>
true&nbsp; : 弹出错误警告窗口<br>
false : 不要弹出错误警告窗口</p>
<p>函数返回:无</p>
<p>函数说明:<br>
当你进行一个CMD_File的操作的时候(比如:执行一个ConnectProvider(&quot;zipext.dll&quot;)),可能产生一个错误(例如zipext.dll不存在),这时MDFile会记录一个错误信息,如果此时EnableErrMSG设置成true,系统就会弹出一个警告窗口,告诉你出错了。如果此时EnableErrMSG是false,系统不会弹出一个警告窗口,这时你可以使用GetErrorCode来检索这个错误代码。</p>
<p> </p>
<p>DWORD <a name="GetErrorCode"></a>GetErrCode(void)</p>
<p>入口参数:无</p>
<p>函数返回:错误代码</p>
<p>函数说明:<br>
当你进行一个CMD_File的操作的时候(比如:执行一个ConnectProvider(&quot;zipext.dll&quot;)),可能产生一个错误(例如zipext.dll不存在),这时MDFile会记录一个错误信息,用这个函数可以得到这个错误代码(8)</p>
<p> </p>
<p>void <a name="EnableExtraFileFolder"></a>EnableExt(bool bEnable)</p>
<p>入口参数:bool bEnable(true|false)<br>
true&nbsp; : 允许外部检索<br>
false : 禁止外部检索</p>
<p>函数返回:无</p>
<p>函数说明:<br>
当你读取一个文件的时候,如果指定了外部检索为true,那么系统首先会在对应的文件夹中搜索是否存在这个文件,如果不存在才去读取文件包中的文件。如:<br>
CMD_File file;<br>
file.EnableExt(true);<br>
file.Open(&quot;test.epk&quot;,true,true);<br>
file.Locate(&quot;hi.txt&quot;);<br>
file.Read(); <br>
此时如果存在在test.epk文件一起的一个test文件夹,同时test文件夹下有hi.txt则系统会读取test文件夹下的hi.txt文件。如果不存在hi.txt文件系统才会读取test.epk包里的hi.txt文件<br>
 </p>
<p> </p>
<p>void <a name="SetExtFilePath"></a>SetExt(char *path)</p>
<p>入口参数:char *path&nbsp; (基路径)</p>
<p>函数返回:无</p>
<p>函数说明:<br>
外部检索的目录规则是:基目录+文件包主名,如:<br>
CMD_File file;<br>
file.EnableExt(true);<br>
SetExtFilePath(&quot;base&quot;);<br>
file.Open(&quot;test.epk&quot;,true,true);<br>
file.Locate(&quot;hi.txt&quot;);<br>
file.Read();<br>
假设本程序在C:\test\下,则系统首先会搜索C:\test\base\test\hi.txt。不存在就读取test.epk文件包中的hi.txt</p>
<p> </p>
<p>bool <a name="ConnectFileProvider"></a>ConnectProvider(char *ProviderName)</p>
<p>入口参数:char *ProviderName&nbsp; (FileProvider的文件名)</p>
<p>函数返回:连接到指定的FileProvider是否成功<br>
成功 : true<br>
失败 : false</p>
<p>函数说明:<br>
系统本身仅支持epk格式,需要依靠外部的FileProvider来支持额外的压缩包格式,下面的例子是利用ZipExt.dll这个FileProvider来读取的Zip格式的压缩包:<br>
CMD_File file;<br>
file.ConnectProvider(&quot;ZipExt.dll&quot;);<br>
file.Open(&quot;test.zip&quot;,true,true);<br>
file.Locate(&quot;data.txt&quot;);<br>
file.Read();<br>
注意:<br>
CMD_File file;<br>
file.ConnectProvider(&quot;ZipExt.dll&quot;);<br>
这两段可以写成一段:CMD_File file(&quot;ZipExt.dll&quot;)</p>
<p> </p>
<p>void <a name="FreeProvider"></a>FreeProvider(void)</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -