DDT资源的读写

DDT文件被描述为类似存储在文件中的map对象,用于通过键查找对应的字符串或其他值。它们通常用于下拉列表等,其中显示的字符串对应于程序处理的键。DDT文件包含键和值,可以通过文本编辑器编辑,然后通过编译命令转换为二进制形式,作为程序的一部分使用。DdtMemTblClass类提供了读写DDT文件的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是DDT文件?

 

因为没系统学过MFC编程,还真不知道什么叫DDT,但是,从里面的内容存储来想,应该是data definition table的意思吧。搜索了百度,还有谷歌,也没有搜到...暂且作罢,管他是什么呢,知道里面存什么,应该怎么用,应该暂时就OK了吧。不过,对于牛X闪闪的人来说,知道这些还不够。好在,我不是。

 

DDT文件存储样本

#include <xxtddt.h>
#ifdef WINDDT
#include "gtl_ddtd.hpp"
.MemBegin
LOG_TYPETBL   TYPETBL    0  4
.MemEnd
#endif
.TblBegin
TYPETBL   
'I'  "IT"          "a"                 
'C'  "China"       "b"                  
'S'  "Sinal"      "c"
'N'  "Nano" "d"
.TblEnd

 

起始,DDT文件,可以简单想象成一个存储在文件里面的map对象,用户可以通过一个key,来找到对应的字符串,或者其他。

最简单的应用,比如,下拉列表。当用户点击了下拉列表,显示给用户的列表里面,是一串串字符串,如,上面的China,还有Sinal。但是,程序真正接受处理并存储在数据库里面的,是字符串对应的key。这些key,可能对应的是一个数字,也可能是一个简单的代码,上面的例子,用的是I,C,S,N这些字母。

DDT文件里面定义了key,还有key对应的values。第一列是key,第二第三都是value。其中,第二列是value,第三列是value的缩写。

因为不知道什么是DDT,也不知道DDT的规范,所以,不知道value它支持不支持大于两个的value。

 

DDT文件的编译

一个project里面会有很多个ddt文件,以明文显示,可以通过任何文本编辑器去编辑。最后,会用过编译命令,编译成一个二进制代码。这份二进制(或许不是二进制)文件,和程序打包,才可以跑起来。程序并不直接依赖。换句话说,最后编译出来的ddt,有点类似动态的库,dll,只有当程序界面需要的时候才会加载。

在某项目里面,ddt的编译,是通过一个脚本来执行的。

 

DDT文件的读写

DdtMemTblClass 这个类负责ddt文件的读写

Sample Code:

DdtMemTblClass * pMemTable = new DdtMemTblClass;
    pMemTable->Load(LOG_TYPETBL);

Err = pMemTable->First();

do {
        // Retrieve data from the DDT table
        if (pMemTable->Value(&iCode) != OKAY ||
            pMemTable->Text(szText) != OKAY  ||
            pMemTable->Text2(szText2) != OKAY)
        {
            SetInvalidState(ACCESS_ERR);   
            return;
        }

        map.SetAt( iCode, szText);
    }while(pMemTable->Next() == OKAY);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值