delphi语言转为bcb语言的注意事项
2006-02-09 10:20
169 查看
delphi 转 bcb 常用语法转换及注意事项
----------------------------
delphi不区分大小写,bcb区分大小写
----------------------------
interger 转int
string 转String
----------------------------
if then 转if ()
else 转else
----------------------------
case of 转switch ()
1: 转case 1:
转break;
end
----------------------------
for i=1 to 2 do 转for(int i=1; i<=2; i++)
----------------------------
while do 转while()
----------------------------
result 转return(立即返回)
----------------------------
inc(i) 转i++
dec(i) 转i--
----------------------------
动态数组aa
setlength(aa,6) 转aa.length=6;
----------------------------
create 转new
free 转delete
button1 is Tbutton 转button1->ClassNameIs("TButton")
Tbutton(button1) 转(TButton*)(button1)
----------------------------
. 转->
:= 转=
= 转==
<> 转!=
not 转!
and 转&& &(运算) //在if,while等判断语句中,大部分的情况都是&&或||
or 转|| |(运算) //在赋值语句中,大部分都是&或者|,特别是int类型的
' 转" 字符串操作
----------------------------
delphi to bcb消息转换的处理
对于必须要继承父类消息的子类来说,因为bcb严格支持c++的私有成员的可见性,所以对于delphi中很容易实现的消息继承,
对于bcb来说变成了不可能,必须通过父类的保护对象wndproc来进行消息的继承,而不是通过消息映射。
比如对窗体大小的改变的消息处理
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_WINDOWPOSCHANGED, TWMWindowPosMsg, WMWindowPosChanged)
END_MESSAGE_MAP(Controls::TCustomControl)
因为无法继承父类的消息,所以对于运行中窗体大小的改变,将无法实现。解决的办法就是通过WndProc函数进行处理
class TBaseList : public Controls::TCustomControl
void __fastcall TBaseList::WndProc(Messages::TMessage &Message)
{
TCustomControl::WndProc(Message);
switch (Message.Msg)
{
case CM_DRAG:
doCMDrag(*(Controls::TCMDrag *)(&Message));
break;
case WM_WINDOWPOSCHANGED:
doWindowPosChanged(Message);
break;
case WM_LBUTTONDOWN:
doWMLBUTTONDOWN(*(Messages::TWMMouse *)(&Message));
break;
case WM_KEYDOWN:
doWMKeyDown(*(Messages::TWMKey *)(&Message));
break;
case CM_WANTSPECIALKEY:
doCMWANTSPECIALKEY(*(Messages::TWMKey *)(&Message));
break;
case WM_KILLFOCUS:
doWMKillFocus(*(Messages::TWMSetFocus *)(&Message));
break;
case CM_FONTCHANGED:
doCMFontChanged(*(Messages::TMessage *)(&Message));
break;
}
}
void __fastcall TBaseList::doCMDrag(Controls::TCMDrag &Message)
void __fastcall TBaseList::doWMRBUTTONDOWN(Messages::TWMMouse &Message)
----------------------------
注意事项:
1,判断语句if (a=2)对应if (a==2),最常见错误if (a=2)
2,与或运算a:=b or 1对应a=b | 1,最常见错误a=b||1
3,bcb中case每条都要有对应的break;
4,result在delphi中并不返回,但是bcb,return就立刻返回了,注意return放置的位置
5,delphi中同一单元中定义的类可以互相访问其它类的私有成员,但是bcb很严格,不可以
6, delphi中的整除用div,bcb中/的左右两边如果是整数就代表整除了,delphi中的/代表浮点数运算而bcb中则要强制转换,比如4/12在delphi和bcb中是不同的结果
7, 区域赋值的问题要注意lpRect.BottomRight的赋值是points[1] = Point(lpRect.Right, TreeRect.Bottom); 而不是points[1] = Point(TreeRect.Bottom, lpRect.Right);
----------------------------
delphi不区分大小写,bcb区分大小写
----------------------------
interger 转int
string 转String
----------------------------
if then 转if ()
else 转else
----------------------------
case of 转switch ()
1: 转case 1:
转break;
end
----------------------------
for i=1 to 2 do 转for(int i=1; i<=2; i++)
----------------------------
while do 转while()
----------------------------
result 转return(立即返回)
----------------------------
inc(i) 转i++
dec(i) 转i--
----------------------------
动态数组aa
setlength(aa,6) 转aa.length=6;
----------------------------
create 转new
free 转delete
button1 is Tbutton 转button1->ClassNameIs("TButton")
Tbutton(button1) 转(TButton*)(button1)
----------------------------
. 转->
:= 转=
= 转==
<> 转!=
not 转!
and 转&& &(运算) //在if,while等判断语句中,大部分的情况都是&&或||
or 转|| |(运算) //在赋值语句中,大部分都是&或者|,特别是int类型的
' 转" 字符串操作
----------------------------
delphi to bcb消息转换的处理
对于必须要继承父类消息的子类来说,因为bcb严格支持c++的私有成员的可见性,所以对于delphi中很容易实现的消息继承,
对于bcb来说变成了不可能,必须通过父类的保护对象wndproc来进行消息的继承,而不是通过消息映射。
比如对窗体大小的改变的消息处理
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_WINDOWPOSCHANGED, TWMWindowPosMsg, WMWindowPosChanged)
END_MESSAGE_MAP(Controls::TCustomControl)
因为无法继承父类的消息,所以对于运行中窗体大小的改变,将无法实现。解决的办法就是通过WndProc函数进行处理
class TBaseList : public Controls::TCustomControl
void __fastcall TBaseList::WndProc(Messages::TMessage &Message)
{
TCustomControl::WndProc(Message);
switch (Message.Msg)
{
case CM_DRAG:
doCMDrag(*(Controls::TCMDrag *)(&Message));
break;
case WM_WINDOWPOSCHANGED:
doWindowPosChanged(Message);
break;
case WM_LBUTTONDOWN:
doWMLBUTTONDOWN(*(Messages::TWMMouse *)(&Message));
break;
case WM_KEYDOWN:
doWMKeyDown(*(Messages::TWMKey *)(&Message));
break;
case CM_WANTSPECIALKEY:
doCMWANTSPECIALKEY(*(Messages::TWMKey *)(&Message));
break;
case WM_KILLFOCUS:
doWMKillFocus(*(Messages::TWMSetFocus *)(&Message));
break;
case CM_FONTCHANGED:
doCMFontChanged(*(Messages::TMessage *)(&Message));
break;
}
}
void __fastcall TBaseList::doCMDrag(Controls::TCMDrag &Message)
void __fastcall TBaseList::doWMRBUTTONDOWN(Messages::TWMMouse &Message)
----------------------------
注意事项:
1,判断语句if (a=2)对应if (a==2),最常见错误if (a=2)
2,与或运算a:=b or 1对应a=b | 1,最常见错误a=b||1
3,bcb中case每条都要有对应的break;
4,result在delphi中并不返回,但是bcb,return就立刻返回了,注意return放置的位置
5,delphi中同一单元中定义的类可以互相访问其它类的私有成员,但是bcb很严格,不可以
6, delphi中的整除用div,bcb中/的左右两边如果是整数就代表整除了,delphi中的/代表浮点数运算而bcb中则要强制转换,比如4/12在delphi和bcb中是不同的结果
7, 区域赋值的问题要注意lpRect.BottomRight的赋值是points[1] = Point(lpRect.Right, TreeRect.Bottom); 而不是points[1] = Point(TreeRect.Bottom, lpRect.Right);
相关文章推荐
- delphi中httpencode使用注意事项
- c语言类型转换注意事项
- C语言知识点注意事项分类整理[不定期更新]
- 现有Delphi项目迁移到D2009中的注意事项
- BCB写DLL要注意的事项
- Delphi中GetCurrentDir使用注意事项
- Delphi 模式窗体返回值ModalResult的使用方法及注意事项
- Delphi中使用Lua脚本语言的几点注意!
- go语言,环境配置注意事项
- Delphi 模式窗体返回值ModalResult的使用方法及注意事项
- 编程新手选择开发语言的注意事项
- c/c++语言位域注意事项
- 注释的使用方法及注意事项和汇编语言的使用
- QT数据库驱动和多国语言驱动部署注意事项
- delphi 串口 关于RS485总线通信协议开发注意事项
- Delphi TPerlRegEx 非贪婪匹配注意事项
- delphi升级xe注意事项
- Linux下C语言编程的注意事项
- Ubuntu16.04 部署配置GO语言开发环境 & 注意事项
- delphi的tclientdataset的中文过滤使用注意事项