非常郁闷非常郁闷,懂的朋友来看看,不懂的朋友来up,都有分 本来一个编译后25k的程序,加了个Variant的变量后,编译完变成73k,太离谱了吧?!!!用CreateOleObject一定要用Variant吗?有懂的朋友来指点下,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CreateOleObject是ComObj单元的方法 写把数据导入excel、word的程序时,一般是用到了Variant 在定义、创建ole对象时用到了吧 自动化对象可以使用OleVariant来试试,看大小如何。当然也得引用ComObj单元。其实COM本身就很大,用ATL做COM也是一样很大的。如何你使用静态编译文件的话,本身就有几百K,多出几十K也不会显得多大的。你还可以用可执行文件压缩工具来来对它压缩,还能小点。你还可以对ComObj来进行定制,把不需要的都删掉,即定制内核。也许还有别的办法大家一起来讨论。 Variant需要引用单元,你看看USES那里是不是多了单元了。 我没把Comobj单元引进来。没声明Variant变量的时候编译以后是25k,一声明后就变73k了。没有引用新的单元。我自己剥离了一个Comobj2.pas,里面只有Createoleobject声明OleVariant比Variant多0.5k,更郁闷 根本没代码,我只引用了windows这个单元。然后声明变量var x:variant;以后编译出来就大了很多,原因我也知道看了Variant和OleVariant的定义它们本身是一块内存地址。因为要求变体类型有足够大,用其他变量可能会发生溢出 还有更怪的呢,本来一个程序编完8M多。后来改bug,加了两句话,编完后只胜4M了。 不一定,你也可以声明为借口然后用Co---.create创建,也可以用派遣借口,以disp结尾的借口调用这些东西都是自动化服务器自动生成的,如果不知道接口类型,可以用variant调用。 大哥,这一点点体积算什么?使用COM肯定要用OleVariant、Varint什么的。怎么现在还在为这个烦? to happy00() : 就是不知道接口类型啊比如CreateOleObject('outlook.application') windows定义了十几种类型的数据可以跨平台传递(例如可以在VC和delphi的程序里传递),variant只是一种特殊的类型我的思路:楼主如果确定自己要用的数据类型,并且该数据类型不会发生变化的话,试下用其他明确的类型而不要用variant to gdstyzh01(飞梭流金) :我定义成IDispatch接口,可我并不知道outlook.application接口类型是什么,怎么定义啊?? 咱不是很懂。OLE应该属于COM组件,而COM组件在脚本语言应用时总会将变量默认为Variant变量。我觉得可以看一下相关的资料。帮忙顶 当你使用了variant以后, 在编译时需要多添加一个variants的unit,自然是会添加你的程序大小了. to LuYang(爱心):根本没使用variants单元。不过应该是编译的时候编译器把System单元一起编译进来了。 outlook.application接口是什么我也不清楚,因为没碰过,你可以上网看看有没有相关资料,还有帮助文档 to e5022(helpid):用无类型指针?有相关资料吗? fastreport 打印固定行的问题 求EMS Query Builder componnets 2005(3.0) MD5加密是什么意思啊? Delphi7中的TActionToolBar的中文显示问题。急! 谁能给我讲一下病毒是怎样在局域网上其它的计算机上运行的? 一个查询问题,50分 初做B/S结构数据库软件,应注意哪些问题............. delphi的升级包的序列号怎么填? dephi中怎样选中DBGrid的行 数据库 女友提出分手 [超越英雄的好片][暖春]强烈推荐,黑社会老大看了都会流泪...
var
x:variant;
以后编译出来就大了很多,原因我也知道
看了Variant和OleVariant的定义
它们本身是一块内存地址。因为要求变体类型有足够大,用其他变量可能会发生溢出
本来一个程序编完8M多。
后来改bug,加了两句话,编完后只胜4M了。
这些东西都是自动化服务器自动生成的,如果不知道接口类型,可以用variant调用。
怎么现在还在为这个烦?
我的思路:楼主如果确定自己要用的数据类型,并且该数据类型不会发生变化的话,试下用其他明确的类型而不要用variant