function GIT: IGlobalInterfaceTable;
const
GITIntf: IGlobalInterfaceTable = nil;
begin
if not Assigned(GITIntf) then
GITIntf := CreateComObject(CLSID_StdGlobalInterfaceTable) as IGlobalInterfaceTable;
Result := GITIntf
end;
问题如题
在好几本书上都有类似的的代码,不知道是不是对OBJECT PASCAL修改过以后不支持这样的语法了.
我明知道CONST类型的不可以赋值,但是好些书上都有这样的,但是今天在计算机用的时候却通不过,不知道各位有什么变通的方法
const
GITIntf: IGlobalInterfaceTable = nil;
begin
if not Assigned(GITIntf) then
GITIntf := CreateComObject(CLSID_StdGlobalInterfaceTable) as IGlobalInterfaceTable;
Result := GITIntf
end;
问题如题
在好几本书上都有类似的的代码,不知道是不是对OBJECT PASCAL修改过以后不支持这样的语法了.
我明知道CONST类型的不可以赋值,但是好些书上都有这样的,但是今天在计算机用的时候却通不过,不知道各位有什么变通的方法
解决方案 »
- 组件安装问题
- delphi+mysql 一下代码怎么会报错呢 ??很简单的问题,
- 宽屏下界面问题
- 想在家访问公司内部局域网内sql数据库
- (600分)如何制作自定义报表设计器
- 各位网友,那位知道有一个专门讨论BusinessSkinForm的专门论坛?谢谢!
- 关于 CASE 的语句 ====================
- 用dll创建控件之后用button按钮去调用确不能成功但是在form写与dll里相同的代码却还有错为什么呢???????????
- ClientDataSet连接DataSetProvider更新
- 听说delphi要涨价了,真的?假的?
- 想写一个网站分发数据的软件,就是网站将数据文件分发到所有的客户机里,怎么实现?
- 调用C#写的Web服务, 怎么老是出现错误
GITIntf: IGlobalInterfaceTable = nil;function GIT: IGlobalInterfaceTable;
begin
if not Assigned(GITIntf) then
GITIntf := CreateComObject(CLSID_StdGlobalInterfaceTable) as IGlobalInterfaceTable;
Result := GITIntf
end;
uses ActiveX, ComObj;const
CLSID_StdGlobalInterfaceTable: TGUID = '{00000000-0000-0000-0000-000000000000}'; //测试用function GIT: IGlobalInterfaceTable;
{$J+}
const
GITIntf: IGlobalInterfaceTable = nil;
{$J-}
begin
if GITIntf = nil then
GITIntf := CreateComObject(CLSID_StdGlobalInterfaceTable) as IGlobalInterfaceTable;
Result := GITIntf
end;
回:
cngram(阿琦) ( ) 信誉:100 Blog 2006-12-15 11:06:20 得分: 0
用var, 为什么非要用const?
答
好像是CONST声明在一个函数中,这样的变量可以在堆中分配内存,而VAR在函数中只是栈中分配,栈中的内存在调用完函数就消失了,而堆中不一样,这样一来,可以在函数中声明一个全局的变量,就好像是BASIC语言中的STATIC变量一样:)
用VAR破坏了对象的封装性,每个函数都可以访问它.
这是在<DELPHI设计模式>中提到的,它的单例模式中用到了这样的技术.
---------------
我刚才也找了一个COMPLIER DIRECTIVE的东西,刚发现是$J+的问题,谢谢了,呵呵,为什么不发贴怎么想也想不出,一发后就自己找到答案了呢??仍然对zswang(伴水清清)(专家门诊清洁工) 的热情
表示严重感谢,分数不多,请笑纳