VC++代码改成delphi出现的错误 请大家帮忙看看
VC++代码改成delphi出现的错误 请大家帮忙看看 VC++中的new相当于delphi中的什么呢
VC++中这样定义的
typedef struct tagBITMAPINFO2 {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[3];
} BITMAPINFO2;
BITMAPINFOHEADER* m_pBitmapInfoHeader;
BITMAPINFO2 * m_pBitmapInfo;
m_pBitmapInfoHeader = (BITMAPINFOHEADER * )new BITMAPINFOHEADER;
m_pBitmapInfo = new BITMAPINFO2;
memset(m_pBitmapInfoHeader, 0, sizeof(BITMAPINFOHEADER));
m_pBitmapInfoHeader->biSize = sizeof(BITMAPINFOHEADER);
m_pBitmapInfoHeader->biWidth = WIDTH;
m_pBitmapInfoHeader->biHeight = HEIGHT;
m_pBitmapInfoHeader->biPlanes = 1;
memset(m_pBitmapInfo, 0, sizeof(BITMAPINFO2));
对应的delphi中我是这样写的
type
PBitmapInfo2 = ^TBitmapInfo2;
tagBITMAPINFO2 = packed record
bmiHeader: TBitmapInfoHeader;
bmiColors: array[0..2] of RGBQUAD;
end;
TBitmapInfo2 = tagBITMAPINFO2;
BITMAPINFO2 = tagBITMAPINFO2;
var
m_pBitmapInfoHeader: PBitmapInfoHeader; //这个PBitmapInfoHeader是windows中就有的
m_pBitmapInfo: PBitmapInfo2; //这个PBitmapInfo2是自定义的
然后在formcreate中如下
New(m_pBitmapInfo); //对应VC++中的new 这样写正确吗 应该怎样写呢?
New(m_pBitmapInfoHeader);
FillChar(m_pBitmapInfoHeader, sizeof(BITMAPINFOHEADER), 0);
m_pBitmapInfoHeader.biSize := sizeof(BITMAPINFOHEADER); //运行到这一句提示错误
m_pBitmapInfoHeader.biWidth := WIDTH;
m_pBitmapInfoHeader.biHeight := HEIGHT;
m_pBitmapInfoHeader.biPlanes := 1;
FillChar(m_pBitmapInfo, sizeof(BITMAPINFO2), 0);
请大家帮忙看看哪里出了问题 请大侠帮忙改正 先谢谢了
[解决办法]
不清楚帮你顶顶,占个位置学习学习
[解决办法]
m_pBitmapInfo:=glabalalloc() 试试看,就是在内存开个空间
[解决办法]
申请结构体的内存空间
[解决办法]
用GetMem()和FreeMem()
[解决办法]
这么明显的错误,而且出现了两次,我很好奇这么弱的错误多久才能有人看出来。还有上面支招的那些人,我也很好奇,你们做的程序能用么?
[解决办法]
New(m_pBitmapInfo); //对应VC++中的new 这样写正确吗 应该怎样写呢?
New(m_pBitmapInfoHeader);
delephi里是不需要这两句话的,直接使用就行了。
这是结构体定义,不需要实例化的。
[解决办法]
up up
[解决办法]
一样可以用New,也可以用GetMem.两个有点区别.可以自己查文档看看