#◎##数据类型转换 (高手级问题)(另开帖给分)#◎## (50分)

  • 主题发起人 主题发起人 duhai_lee
  • 开始时间 开始时间
D

duhai_lee

Unregistered / Unconfirmed
GUEST, unregistred user!
原帖修改如下:
下面是一段VB代码。 实现的功能是在word中提取第3个图形的第二个顶点的坐标值。
调试正确。
Set myDocument = Worksheets(1)
With myDocument.Shapes(3).Nodes
pointsArray = .Item(2).Points
currXvalue = pointsArray(1, 1)
currYvalue = pointsArray(1, 2)
.SetPosition 2, currXvalue + 200, currYvalue + 300
End With
我的问题是:
[red]如何把这些代码变成delphi的。我的代码是这样的。[/[/red]b]
关键问题是olevariant类型的转换问题上。 求各位大侠帮忙,小弟在线等。
 
是不是没uses word2000啊?
 
不是。 那样的话编译都通不过
 
抱歉,不会,帮你up
 
高手们都那里去了、??
 
测试一下类型,注意一下数组和 方法的区别
 
楼上大哥能不能详细点啊。
 
在线等待。。。
 
必须的悬赏嘛、
 
試一下:
var
// PointsArray : array of array of double;
d,c:OleVariant;
currxvalue,currYvalue: Double;
x,y:Variant; //**************加入
begin
c:=2; d:=1;
With MyPickup.WordApplication.ActiveDocument.Shapes.Item(d).Nodes do
begin
//pointsArray := Item(c).Points;
x := Item(c).Points[1, 1]; //**************加入
y := Item(c).Points[1, 2];//**************加入
currXvalue := x;//**************加入
currYvalue := y;//**************加入
showmessage(FloatToStr(currxvalue)+'x y'+FloatToStr(currYvalue));
//.SetPosition 2, currXvalue + 200, currYvalue + 300
End;
end;
 
to: kouchun :
提示“类型不匹配” 在给x赋值的那行
 
自己顶一下
 
再顶一下。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=602202里面是怎样转换的!
olevariant是任何类型!
 
那里没有我要的答案。 唉。
 
自己打水自己灌, 希望帖子浮着,别掉下去就有希望。 呵呵。
 
翻译类似下面的:

{ Code By Kingron }

procedure TForm1.Button1Click(Sender: TObject);
var
WordApp, Nodes, Points: OleVariant;
X, Y : integer;
begin
try
WordApp := GetActiveOleObject('Word.Application');
except
WordApp := CreateOleObject('Word.Application');
end;
WordApp.ShowMe;

Nodes := WordApp.ActiveDocument.Shapes.Item(3).Nodes;
Points:= Nodes.Item(2).Points;

/// Don't use : X:= Nodes.Item(2).Points[1,1]; !!!!
/// Otherwise, you will Get an error!
X := Points[1,1];
Y := Points[1,2];

Nodes.SetPosition(2, X + 200, Y + 200);
end;
 
TO:Kingron:
非常感谢您的帮助。这里的分给你,还请您到http://www.delphibbs.com/delphibbs/dispq.asp?lid=2604145里来拿分。
希望能留下您的email和qq。
 
接受答案了.
 
后退
顶部