用CreateOleObject一定要用Variant吗?有懂的朋友来指点下,谢谢
55 个解决方案
#1
不懂~ up
#2
CreateOleObject是ComObj单元的方法
#3
写把数据导入excel、word的程序时,一般是用到了Variant
#4
在定义、创建ole对象时用到了吧
#5
UP
#6
up
#7
up
#8
up一下
#9
不懂,关注...
#10
自动化对象可以使用OleVariant来试试,看大小如何。当然也得引用ComObj单元。其实COM本身就很大,用ATL做COM也是一样很大的。如何你使用静态编译文件的话,本身就有几百K,多出几十K也不会显得多大的。你还可以用可执行文件压缩工具来来对它压缩,还能小点。你还可以对ComObj来进行定制,把不需要的都删掉,即定制内核。也许还有别的办法大家一起来讨论。
#11
学习学习,Up
#12
up
#13
不懂,学习
#14
Variant需要引用单元,你看看USES那里是不是多了单元了。
#15
up
#16
可以给代码让懂的给看看
#17
我没把Comobj单元引进来。
没声明Variant变量的时候编译以后是25k,一声明后就变73k了。
没有引用新的单元。
我自己剥离了一个Comobj2.pas,里面只有Createoleobject
声明OleVariant比Variant多0.5k,更郁闷
没声明Variant变量的时候编译以后是25k,一声明后就变73k了。
没有引用新的单元。
我自己剥离了一个Comobj2.pas,里面只有Createoleobject
声明OleVariant比Variant多0.5k,更郁闷
#18
把代码贴出来让大家帮我分析分析!!!!
#19
没人理?up一下!
#20
根本没代码,我只引用了windows这个单元。
然后声明变量
var
x:variant;
以后编译出来就大了很多,原因我也知道
看了Variant和OleVariant的定义
它们本身是一块内存地址。因为要求变体类型有足够大,用其他变量可能会发生溢出
然后声明变量
var
x:variant;
以后编译出来就大了很多,原因我也知道
看了Variant和OleVariant的定义
它们本身是一块内存地址。因为要求变体类型有足够大,用其他变量可能会发生溢出
#21
帮顶
#22
帮顶
#23
还是没人?
#24
还有更怪的呢,
本来一个程序编完8M多。
后来改bug,加了两句话,编完后只胜4M了。
本来一个程序编完8M多。
后来改bug,加了两句话,编完后只胜4M了。
#25
哦~~~,真的吗,可否分享一下代码吗!??
#26
不一定,你也可以声明为借口然后用Co---.create创建,也可以用派遣借口,以disp结尾的借口调用
这些东西都是自动化服务器自动生成的,如果不知道接口类型,可以用variant调用。
这些东西都是自动化服务器自动生成的,如果不知道接口类型,可以用variant调用。
#27
UP
#28
UP
#29
我是来up的
#30
路过,学习
#31
不明飞行物
#32
大哥,这一点点体积算什么?使用COM肯定要用OleVariant、Varint什么的。
怎么现在还在为这个烦?
怎么现在还在为这个烦?
#33
to happy00() : 就是不知道接口类型啊
比如CreateOleObject('outlook.application')
比如CreateOleObject('outlook.application')
#34
UP
#35
UP
#36
真的没留意过
mark
mark
#37
up
#38
windows定义了十几种类型的数据可以跨平台传递(例如可以在VC和delphi的程序里传递),variant只是一种特殊的类型
我的思路:楼主如果确定自己要用的数据类型,并且该数据类型不会发生变化的话,试下用其他明确的类型而不要用variant
我的思路:楼主如果确定自己要用的数据类型,并且该数据类型不会发生变化的话,试下用其他明确的类型而不要用variant
#39
up
#40
to gdstyzh01(飞梭流金) :
我定义成IDispatch接口,可我并不知道outlook.application接口类型是什么,怎么定义啊??
我定义成IDispatch接口,可我并不知道outlook.application接口类型是什么,怎么定义啊??
#41
咱不是很懂。OLE应该属于COM组件,而COM组件在脚本语言应用时总会将变量默认为Variant变量。我觉得可以看一下相关的资料。帮忙顶
#42
我up一下,我现在正在学
#43
不懂 UP UP UP~
#44
学习
#45
UP
#46
不懂,关注...
#47
当你使用了variant以后, 在编译时需要多添加一个variants的unit,自然是会添加你的程序大小了.
#48
up
#49
to LuYang(爱心):
根本没使用variants单元。
不过应该是编译的时候编译器把System单元一起编译进来了。
根本没使用variants单元。
不过应该是编译的时候编译器把System单元一起编译进来了。
#50
outlook.application接口是什么我也不清楚,因为没碰过,你可以上网看看有没有相关资料,还有帮助文档
#1
不懂~ up
#2
CreateOleObject是ComObj单元的方法
#3
写把数据导入excel、word的程序时,一般是用到了Variant
#4
在定义、创建ole对象时用到了吧
#5
UP
#6
up
#7
up
#8
up一下
#9
不懂,关注...
#10
自动化对象可以使用OleVariant来试试,看大小如何。当然也得引用ComObj单元。其实COM本身就很大,用ATL做COM也是一样很大的。如何你使用静态编译文件的话,本身就有几百K,多出几十K也不会显得多大的。你还可以用可执行文件压缩工具来来对它压缩,还能小点。你还可以对ComObj来进行定制,把不需要的都删掉,即定制内核。也许还有别的办法大家一起来讨论。
#11
学习学习,Up
#12
up
#13
不懂,学习
#14
Variant需要引用单元,你看看USES那里是不是多了单元了。
#15
up
#16
可以给代码让懂的给看看
#17
我没把Comobj单元引进来。
没声明Variant变量的时候编译以后是25k,一声明后就变73k了。
没有引用新的单元。
我自己剥离了一个Comobj2.pas,里面只有Createoleobject
声明OleVariant比Variant多0.5k,更郁闷
没声明Variant变量的时候编译以后是25k,一声明后就变73k了。
没有引用新的单元。
我自己剥离了一个Comobj2.pas,里面只有Createoleobject
声明OleVariant比Variant多0.5k,更郁闷
#18
把代码贴出来让大家帮我分析分析!!!!
#19
没人理?up一下!
#20
根本没代码,我只引用了windows这个单元。
然后声明变量
var
x:variant;
以后编译出来就大了很多,原因我也知道
看了Variant和OleVariant的定义
它们本身是一块内存地址。因为要求变体类型有足够大,用其他变量可能会发生溢出
然后声明变量
var
x:variant;
以后编译出来就大了很多,原因我也知道
看了Variant和OleVariant的定义
它们本身是一块内存地址。因为要求变体类型有足够大,用其他变量可能会发生溢出
#21
帮顶
#22
帮顶
#23
还是没人?
#24
还有更怪的呢,
本来一个程序编完8M多。
后来改bug,加了两句话,编完后只胜4M了。
本来一个程序编完8M多。
后来改bug,加了两句话,编完后只胜4M了。
#25
哦~~~,真的吗,可否分享一下代码吗!??
#26
不一定,你也可以声明为借口然后用Co---.create创建,也可以用派遣借口,以disp结尾的借口调用
这些东西都是自动化服务器自动生成的,如果不知道接口类型,可以用variant调用。
这些东西都是自动化服务器自动生成的,如果不知道接口类型,可以用variant调用。
#27
UP
#28
UP
#29
我是来up的
#30
路过,学习
#31
不明飞行物
#32
大哥,这一点点体积算什么?使用COM肯定要用OleVariant、Varint什么的。
怎么现在还在为这个烦?
怎么现在还在为这个烦?
#33
to happy00() : 就是不知道接口类型啊
比如CreateOleObject('outlook.application')
比如CreateOleObject('outlook.application')
#34
UP
#35
UP
#36
真的没留意过
mark
mark
#37
up
#38
windows定义了十几种类型的数据可以跨平台传递(例如可以在VC和delphi的程序里传递),variant只是一种特殊的类型
我的思路:楼主如果确定自己要用的数据类型,并且该数据类型不会发生变化的话,试下用其他明确的类型而不要用variant
我的思路:楼主如果确定自己要用的数据类型,并且该数据类型不会发生变化的话,试下用其他明确的类型而不要用variant
#39
up
#40
to gdstyzh01(飞梭流金) :
我定义成IDispatch接口,可我并不知道outlook.application接口类型是什么,怎么定义啊??
我定义成IDispatch接口,可我并不知道outlook.application接口类型是什么,怎么定义啊??
#41
咱不是很懂。OLE应该属于COM组件,而COM组件在脚本语言应用时总会将变量默认为Variant变量。我觉得可以看一下相关的资料。帮忙顶
#42
我up一下,我现在正在学
#43
不懂 UP UP UP~
#44
学习
#45
UP
#46
不懂,关注...
#47
当你使用了variant以后, 在编译时需要多添加一个variants的unit,自然是会添加你的程序大小了.
#48
up
#49
to LuYang(爱心):
根本没使用variants单元。
不过应该是编译的时候编译器把System单元一起编译进来了。
根本没使用variants单元。
不过应该是编译的时候编译器把System单元一起编译进来了。
#50
outlook.application接口是什么我也不清楚,因为没碰过,你可以上网看看有没有相关资料,还有帮助文档