2013-05-14 78 views
1

下面的代码中,我尝试将DirectionsResult重新加载回TGMDirections。来自备忘录的TDirectionsResult

procedure Form2.Button2Click(Sender: TObject); 
var 
    DR: TDirectionsResult; 
    i: Integer; 
begin 
    DR:= TDirectionsResult.Create(Form1.FDirection, 0); 
    DR.XMLData.BeginUpdate; 
    for i:= 0 to Memo1.Lines.Count - 1 do 
    begin 
    DR.XMLData.Append(Memo1.Lines[i]); 
    end; 
    DR.XMLData.EndUpdate; 
    ShowMessage(Form1.FDirection.DirectionsResult[0].Routes[0].Leg[0].EndAddress); 
end; 

一切似乎好,直到ShowMessage我得到一个列出界限消息。 我认为DR尚未创建或备忘录尚未加载到DirectionsResult中。

进一步的适应已确认DirectionsResult [0]不存在。

帮助纠正将不胜感激。

+0

@NickHodges它是gmlibrary的一部分:https://code.google.com/p/gmlibrary/ – bummi 2013-05-14 17:16:02

回答

1

您无法以编程方式将TDirectionsResult添加到DirectionsResult数组,您需要从TGMDirections对象调用Execute方法。

但是你可以做这样的事情

procedure TForm1.Button1Click(Sender: TObject); 
var 
    DR: TDirectionsResult; 
begin 
    DR:= TDirectionsResult.Create(GMDirection1, 1); 
    DR.XMLData.Text := Memo1.Lines.Text; 
    ShowMessage(DR.Routes[0].Leg[0].EndAddress); 
end; 

也就是说,你可以在不使用你的对象问题,工作,你可以访问所有的属性和方法。

请注意XMLData和Memo.Lines之间的分配,因为XML的控制是在XMLData的OnChange事件上进行的,所以不要逐行分配。

问候。

+0

谢谢cadetill。我的项目运行良好。只需调整并试用您的图书馆。版本1.0.0工作就像对待我。非常感谢过去几个月的电子邮件。 – GreenMeanie 2013-05-15 03:41:13

+0

刚刚尝试过你的执行方法,出色地工作。再次感谢。 – GreenMeanie 2013-05-15 03:53:02