我们刚从德尔福2006年更新了一个应用程序使用Excel类型库到德尔福2009年。我发现几乎没有任何工作 - 几乎任何调用Excel结果一条消息“不良变量类型”。例如,我们可能会这样做:Sheet.Cells.Item [Row,Column] .Value:=其中Sheet是ExcelWorksheet且Value是Variant的值。我们在堆栈中看到的下一件事是调用Variants中的_DispInvoke,然后调用ComObj。我究竟做错了什么?Excel类型库/德尔福2009 /坏变量类型
1
A
回答
2
原来我们有一个通用的方法来设置格式的单元格的值:
procedure SetValue(aSheet: ExcelWorksheet; aRow, aCol: Integer; aValue: Variant)
begin
aSheet.Cells.Item[aRow, aCol].Value := aValue;
end;
失败与我提到的错误。如果我更改为:
procedure SetValue(aSheet: ExcelWorksheet; aRow, aCol: Integer; aValue: Variant)
var
sValue: WideString;
begin
sValue:= aValue;
aSheet.Cells.Item[aRow, aCol].Value := sValue;
end;
对我来说这表明德尔福2009年是干什么用的变体不同的东西(比D2006是至少),一些COM不喜欢,除非有人有更好的解释吗?无论如何,我很高兴暂时解决这个问题。
2
如果Excel或Delphi版本发生更改,我可以建议您重新创建/重新导入类型库。使用其他版本的TLB通常会产生这些问题。
+0
我们以前使用的Office XP样本导入与Delphi 2006和2009一起提供,而且这对于Excel 2000-2007似乎工作正常(对于我们如何使用它)。无论如何,我现在已经重新导入了类型库并得到完全相同的问题。 – Andrew 2009-04-14 14:02:15
相关问题
- 1. 德尔福类变量
- 2. 德尔福接口和类变量类型
- 3. 德尔福2009年使用COM/ActiveX技术类型库支持稳定
- 4. 德尔福(XE7)泛型类通用TDictionary
- 5. 德尔福为'整数集'类型?
- 6. 从C++的类型转换德尔福
- 7. 德尔福PChar类型C++为const char *
- 8. 类德尔福
- 9. 德卡尔和德尔福2009年
- 10. 转换德尔福7代码与德尔福2009年工作
- 11. 访问德尔福棱镜类库德尔福XE
- 12. 迁移到德尔福2009年 - 无效的类型转换错误
- 13. 解决中的TDataSetProvider德尔福2010年或德尔福2009年
- 14. 德尔福2007年变种类型初始化
- 15. 德尔福泛型方法
- 16. 结构德尔福泛型
- 17. 德尔福2009年泛型编译问题
- 18. 德尔福TDateTime类型变量不会在Delphi中初始化2010
- 19. 德尔福2009年MS生成头痛
- 20. 德尔福2009 TurboPower图书馆转换
- 21. 德尔福2009年压缩gzipped文件
- 22. 德尔福2009年升级问题
- 23. 德尔福2009年编译包
- 24. 德尔福6与RAD Studio 2009一起
- 25. 德尔福2009通用链接列表
- 26. 德尔福2009年导入D7 DPR:
- 27. 德尔福2009年启动错误
- 28. 德尔福布尔变量值
- 29. 德尔斐泛型类型 - 特异性?
- 30. 布尔类型在类中的变量
变体中的值是什么类型?看起来这将创建COM需要的字符串类型的新变体。也许你的旧代码传递了COM变体不支持的ANSIString? – mj2008 2009-04-15 17:16:31