![]() |
ItemCount bei OleVariant
Einen wunderschönen Guten Morgen DP :)
Ich probiere schon seit gästern am Abend, verzweifelnd den Linecount eines OleVariants abzufragen. Es handelt sich glaubich um einen 2 dimensionalen OleVariant. Ich arbeite mit der Komponente von Map&Guide. Und mit der Procedure GetRouteList kann mann die Routen Liste abfragen GetRouteList(level:TOleEnum;out Result:OleVariant); Die Code dazu lautet wie folgt:
Delphi-Quellcode:
Bis an diese Stelle funktioniert alles einwandfrei.
procedure TForm1.OnRouteCalculated(Sender: TObject; success: WordBool);
var nDistance,nDrivingTimeFrom :integer; RouteList:OleVariant; begin if success then begin MGCMapControl1.Map.Routing.GetDistanceAndDuration(nDistance,nDrivingTimeFrom); MGCMapControl1.Map.Routing.GetRouteList(erldDetailedList,routeList); end else begin ShowMessage ('route calculation failed'); end; end; Ich habe also jetzt die Routinglist in meiner Variable routeList vom Type OleVariant gespeichert. Aber wie bekomme ich denn jetzt meine routeList in ein Memo auf meinem Form. ich hab das mal so gemacht:
Delphi-Quellcode:
Jetzt liest er die Routinglist ein, aber ich bekomme immer einen Fehler am Schluss, das Der sichere Index auserhalb des zulässigen bereiches liegt.
i:=0;
while RouteList[0,i] <> '' then begin cxMemo1.lines.add(Routlist[0,i]); inc(i); end; Kann ich diesen Index max wert nicht irgendwie abfragen , um einen genau definierten loop zu erzeugen? hab schon high(Routlist) probiert, SizeOf , Lenght , usw... hab es aber leider nicht hinbekommen. Bitte bitte um hilfe. lg bundy |
Re: ItemCount bei OleVariant
wenn du mit einem leeren string vergleichst dann typcastest du doch schon von olevariant auf string.
wenn dein olevariant aber empty oder null ist dann knallt es. du solltest also auf empty oder null prüfen. bei olevariant heisst es glaube unassigned. bei variant ist es varEmpty oder varNull |
Re: ItemCount bei OleVariant
hmmm....
so gehts nicht
Delphi-Quellcode:
so will er das auch nicht
while RouteList[0,i] <> varEmpty do
begin cxMemo1.lines.add(Routelist[0,i]); inc(i); end;
Delphi-Quellcode:
ich glaube das das nichts mit dem wert zu tun hat, sondern mit der abfrage des Wertes "while RouteList[0,i]"
while RouteList[0,i] <> Unassigned do
begin cxMemo1.lines.add(Routelist[0,i]); inc(i); end; Am Ende der Routlist angenommen sie hat 50 Lines das heisst i=50 ist alles noch in Ordung, aber jetzt frag ich ab RouteList[0,51] und dieser Wert liegt ausserhalb, deswegen kracht es. Aber wie kann ich das umgehen ? |
Re: ItemCount bei OleVariant
Nach langem suchen hab ich jetzt.
Delphi-Quellcode:
so funktioniertsfor i := VarArrayLowBound(routeList, 2) to VarArrayHighBound(routeList, 2) do begin cxMemo1.lines.add(Routelist[0,i]+' | '+Routelist[1,i]+' | '+Routelist[2,i]+' | '+Routelist[3,i]+' | '+Routelist[4,i]+' | '+Routelist[5,i]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz