首页
社区
课程
招聘
[求助]delphi中如何定义一个可扩充的结构
发表于: 2009-7-14 18:05 4520

[求助]delphi中如何定义一个可扩充的结构

2009-7-14 18:05
4520
比如下面的C结构:
struct  _EX_TEST{

          word count;
          char  filename[1];
}EX_TEST,*PEX_TEST;
  
EX_TEST* ptemp = (EX_TEST*)new char[sizeof(EX_TEST)+n];
在C中可以直接 temp->filename[2]=0;
而在delphi中,因为结构定义的时候下标比2小,如果引用下标2,就编译不过,请问如何禁止?
我用的delphi2007 ,己经把range check的勾去掉,还是没有作用.

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 296
活跃值: (89)
能力值: ( LV15,RANK:340 )
在线值:
发帖
回帖
粉丝
2
这样访问本来就不是很安全,所以Delphi编译不通过。

Delphi有动态数组,可以随时SetLength(),比如:
type
_EX_TEST = record
count: WORD;
filename: array of Char; // 开始不设定长度
end;
TEX_TEST = _EX_TEST;
PEX_TEST = ^TEX_TEST;

var
temp: TEX_TEST;
begin
temp.count := Length(strTest);
SetLength(temp.filename, temp.count+1); // 设置filename数组长度
CopyMemory(@temp.filename[0], PChar(strTest), temp.count); // 写入内容
...


甚至你什么时候觉得filename长度不够了,直接 SetLength(temp.filename, temp.count+n); 都行。这是Delphi的优势
2009-7-14 20:35
0
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
3
delphi2009 支持泛型容器了
也可以使用DGL啊  应该符合楼主的要求吧
2009-7-15 01:38
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
老师果然是代码翻译高手!
2009-7-15 08:19
0
游客
登录 | 注册 方可回帖
返回
//