VB中的nothing 在delphi如何表示(50分)

  • 主题发起人 主题发起人 apiao
  • 开始时间 开始时间
这个问题我不想成为无头案。
to stlont:
你说我的代码没有问题,可是我在4台机器上测试都没有显示no find!不知道为什么
能否告诉我你测试的条件。
不知道是否和office的版本相关。
另:$00000000的检测很头痛,我看了varisempty的实现方式,可还是没有好的办法。
能否给点提示?
分数么,呵呵。没问题^_^
 
我帮你测试代码的机器:
W2k server 5.00.2195 sp4
Office 2K: Excel 2K 9.0.2812
delphi 5.0 Ent + up1 +adoUp1 + adoUP2

其实你既然跟踪到了$00000000,
说明环境没有影响,
Excel已经返回了空值,
至于OleVariant的测试,
前面我已经说了,
你也看过了varisempty的原码,
可以深入一步,跟踪下Vardata的各个标志,
看看是哪个标志导致测试失败
 
to stlont:
感谢你无私的帮助。
看了你的测试环境,我感觉问题是出在delphi的版本兼容性的问题。
等我换了delphi5编译后再测试!
 
试下下面代码,看看结果:
FindResult := FExcelApp.Cells.Find(AString);
ShowMessage(inttostr(Tvardata(findResult).vtype));
if Tvardata(findResult).vtype=9 then if Tvardata(findResult).VDispatch=nil then ShowMessage('抓到空值了') else ShowMessage('VDispatch<>nil');
 
问题结束!
sltont的回答是最终的答案。
to stlont:
今天我使用了delphi5测试我以前的代码,VarIsEmpty是能FindResult的空值的。
delphi7新定义了Variants单元,看来处理的方法有了变化。我还没有仔细看。
你的新代码我在delphi7下测试没有问题。
再次感觉你。
 
后退
顶部