var
  bkmk:range;//range是一个什么类型,或者在哪些情况下需要定义range类型
  bmname,format:olevariant;//olevariant又是一个什么类型,或者在哪些情况下需要定义olevariant类型
begin  richedit1.SelectAll;
  richedit1.CopyToClipboard;
  richedit1.SelStart:=richedit1.SelLength;  bmname:='Hello';
  format:=wdpastertf;
  bkmk:=worddocument1.Books.item(bmname).Range;//此处的range属性是什么含义
  bkmk.PasteSpecial(emptyparam,emptyparam,emptyparam,emptyparam,format,emptyparam,emptyparam);//参数为空,为什么不能用nil表示
end;请各位高人仔细说明一下,谢谢啦!

解决方案 »

  1.   

    range是个范围类型吧,在word_tlb中查找它的定义是range read get_range,获取它的位置范围
    olevariant是个通用变量类型,它可以转化成任意的类型,在bkmk:=worddocument1.Books.item(bmname).Range中item的参数要求是olevariant类型,所以你在上面定义成olevariant型,还有些常量也是如此定义
    books.item(bmname).range这里就是获取指定的第几个书签的位置范围.
    参数为空的意思并不是参数不存在,nil是无的意思,肯定不能用了,用了nil说明是无,那个位置没有参数,这样你把给你的函数参数个数都改了,只能用空参表示emptyparam