我们刚从德尔福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. 基于泛型参数类型的类型推断(德尔福)
- 4. 德尔福2009年使用COM/ActiveX技术类型库支持稳定
- 5. 类德尔福
- 6. 德尔福不兼容的类型
- 7. 德尔福为'整数集'类型?
- 8. 德尔福(XE7)泛型类通用TDictionary
- 9. 德尔福PChar类型C++为const char *
- 10. 从C++的类型转换德尔福
- 11. 德尔福的数据类型错位?
- 12. 德卡尔和德尔福2009年
- 13. 转换德尔福7代码与德尔福2009年工作
- 14. 德尔福 - >从无类型参数获得记录类型
- 15. 访问德尔福棱镜类库德尔福XE
- 16. 迁移到德尔福2009年 - 无效的类型转换错误
- 17. 解决中的TDataSetProvider德尔福2010年或德尔福2009年
- 18. 德尔福2007年变种类型初始化
- 19. 如何让德尔福货币类型像Excel一样随时变圆?
- 20. 结构德尔福泛型
- 21. 德尔福泛型方法
- 22. 德尔福2009年泛型编译问题
- 23. 元类的默认参数值(德尔福2009)
- 24. 德尔福TDateTime类型变量不会在Delphi中初始化2010
- 25. 溢出而转换型(OLESTR)的变体进入类型整数德尔福
- 26. 德尔福扩展类
- 27. 德尔福2009年MS生成头痛
- 28. 德尔福2010错误E2010不兼容的类型:“ANSIChar类型”和“字符”
- 29. 德尔福2009年导入D7 DPR:
- 30. 德尔福2009 TurboPower图书馆转换
变体中的值是什么类型?看起来这将创建COM需要的字符串类型的新变体。也许你的旧代码传递了COM变体不支持的ANSIString? – mj2008 2009-04-15 17:16:31