Indexierter Instanz Wert zuweisen

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Indexierter Instanz Wert zuweisen

Beitrag von Tom »

Vielleicht werde ich langsam senil. Ich arbeite mit MapPoint, das ein "DriverProfile"-Objekt kennt. Dieses Objekt hat eine Instanz namens "Speed", die die Durchschnittsgeschwindigkeit für verschiedene Straßentypen festlegt. Speed(1) ist die Geschwindigkeit auf Autobahnen, Speed(5) die auf Nebenstraßen. Abrufen läßt sich das relativ leicht so:

Code: Alles auswählen

? oMap:activeRoute:DriverProfile:Speed(1)
Diese Instanz hat Lese-/Schreibzugriff, und ich will sie setzen. Mache ich aber sowas:

Code: Alles auswählen

oMap:activeRoute:DriverProfile:Speed(1) := 120
dann schimpft der Compiler wegen eines Syntaxfehlers, da man - ganz richtig - Ausdrücken keinen Wert zuweisen kann. Die VB-Syntax ist diese hier:

Code: Alles auswählen

objRoute.DriverProfile.Speed(1) = 120
Ich hab jetzt ein paar Stunden herumprobiert (hatte glücklicherweise zwischendrin auch was Anderes zu tun), und bin jetzt genervt. Also, dachte ich, frag ich die Kollegen.

Wie weise ich in Xbase++ einer indexierten Instanz einen Wert zu? :?:
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Indexierter Instanz Wert zuweisen

Beitrag von AUGE_OHR »

hi,
Tom hat geschrieben: Ich arbeite mit MapPoint, das ein "DriverProfile"-Objekt kennt. Dieses Objekt hat eine Instanz namens "Speed", die die Durchschnitts- geschwindigkeit für verschiedene Straßentypen festlegt. Speed(1) ist
die Geschwindigkeit auf Autobahnen, Speed(5) die auf Nebenstraßen.

...

dann schimpft der Compiler wegen eines Syntaxfehlers, da man - ganz richtig - Ausdrücken keinen Wert zuweisen kann. Die VB-Syntax ist diese hier:

Code: Alles auswählen

objRoute.DriverProfile.Speed(1) = 120
Ich gehe mal davon aus dass es ich um ein ActiveX handelt ?
ok, also "Speed(1)" scheint mir eine "Property" zu sein ?

dann würde ich versuchen :

Code: Alles auswählen

objRoute:DriverProfile:setProperty( Speed(1), 120 )
gruss by OHR
Jimmy
p.s. WAS machst du damit eigendlich ? MAUT berechnen ?
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Jimmy das OHR hat geschrieben:p.s. WAS machst du damit eigendlich ? MAUT berechnen ?
Ich denke, er wird für sein Pflegedienstprogramm die Fahrtrouten, deren Dauer und Kosten berechnen. Find ich einfach genial, ich wußte garnicht daß man soetwas auch selber machen kann.

Jan
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

moin,
Jan hat geschrieben:
Jimmy das OHR hat geschrieben:p.s. WAS machst du damit eigendlich ? MAUT berechnen ?
Ich denke, er wird für sein Pflegedienstprogramm die Fahrtrouten, deren Dauer und Kosten berechnen. Find ich einfach genial, ich wußte garnicht daß man soetwas auch selber machen kann.
Fahrrouten = MAUT, deshalb frage ich. Ich kann zwar mit meinem
Programm die Maut berechnen, aber leider nur "manuell" da ich
Probleme habe mit den "Kreuzungen". Solange es "geradeaus"
geht oder "rechts" auf eine andere BAB abgebogen wird ist noch
alles klar, aber wenn es nach "links" geht ...

ansonsten hab ich noch noch das Forum :

http://www.office-loesung.de/viewforum80_0_0.php

gefunden wa interessant ein könnte.

gruss by Ohr
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Jimmy.

Das ist es, herzlichen Dank. Die korrekte Syntax lautet:

Code: Alles auswählen

oMap:activeRoute:DriverProfile:SetProperty("Speed",1,nSpeed) 
Die Vermutung ist richtig. Wir benutzen MapPoint, um für alle möglichen Anschriften anzeigen zu lassen, wo sich die Adresse befindet, wir bieten im Planungsbereich die Möglichkeit, in einer Übersicht zu prüfen, wo alle Mitarbeiter derzeit sind (ambulante Pflege), um herauszufinden, wer einen Einsatz übernehmen könnte. Wir lassen die Wege ermitteln, um Fahrtenbücher anhand der Tourenplanung automatisch zu bestücken. Wir holen uns für eine geplante Tour die "echten" Wegezeiten aus MapPoint. Hierfür brauchen wir die o.g. Eigenschaft, da die Standardwerte von MapPoint ziemlich rasante Touren bauen. Wir lassen Touren vorschlagsmäßig auf diesem Weg optimieren (MapPoint kennt eine "Optimize"-Methode). Und vieles mehr. Die Programmierschnittstelle zu MapPoint ist wirklich sehr bequem, und im Gegensatz zu derjenigen manch anderer M$-Produkte exzellent dokumentiert.

Danke nochmal für die Hilfe! :thumbright:
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Jimmy.

Mit MapPoint kann man auch Fahrtkosten berechnen, allerdings nur über einen allgemeinen Parameter anhand der Strecke und/oder des Benzinverbrauchs. Allerdings läßt sich die Tour, die MapPoint ermittelt, analysieren, man kann also Autobahn-Teilabschnitte ausfiltern u.ä. Das ist zwar ein bißchen fummelig (das Objekt liefert nämlich eigentlich nur Distanzen als lesbare Eigenschaft zwischen den Routenpunkten zurück), sollte sich aber auch für Mautberechnungen nutzen lassen.

Wie (und womit) berechnest Du, was Du "Fahrtrouten" nennst? Und zu welchem Zweck? Nur interessehalber. :D
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
Tom hat geschrieben: ... man kann also Autobahn-Teilabschnitte ausfiltern u.ä.
... sollte sich aber auch für Mautberechnungen nutzen lassen.

Wie (und womit) berechnest Du, was Du "Fahrtrouten" nennst? Und zu welchem Zweck? Nur interessehalber. :D
Es handelt sich effektiv um "die" BAB-Maut. Als Grundlage dient die
Maut Tabelle die es bei : http://www.mauttabelle.de/ gibt.

die "Struktur" der Maut Tabelle ist "eigendlich" ganz einfach :

Feld Typ Länge
BAB Integer 3
K_NR1 Character 4
K_TYP1 Character 4
VON Character 50
K_NR2 Character 4
K_TYP2 Character 4
NACH Character 50
KM Float 2+1
STATUS Character 2

aber wer die "Logik" von K_TYP1 und K_TYP2 festgelegt hat ( Typ des
VON-NACH-Knotens (AS, AK, AD ...) ) war wohl kein Programmierer ...

dazu kommen dann noch "Ausnahmen" wie "rr" (Der Datensatz gilt für
die Gegenrichtung (abweichende Länge) ) ... also so typisch "Beamten"
Deutsch ...

Mein "Problem" sind dabei die "Kreuzungen" (=AK) da es ja nach
"rechts" und nach "links" gehen könnte. Die Daten von "Toll Collect"
sagen mir zwar das ich z.b. von der A1 auf die A24 wechsel und wo
der "Endpunkt" "Anschlusssstelle" (=AS) heisst, aber nicht wo die liegt.
Der "Endpunkt" kann aber weit entfernt liegen solange ich nich "abbiege"

Man muss also "beide abfahren" um fest zu stellen ob es jetzt "rechts"
oder "links" gewesen ist. Dumm nur wenn die nächste AS eine AK ist :(

Es ist also "ähnlich" wie beim Schach das man ein paar Züge im
vorraus errechnen muss um dann die "falschen" zu verwerfen.

sicherlich könnte man es auch ""errechnen" wenn man die GPS-
Koordinaten der AS,AK,AD etc ... hätte (so machen es wohl die
"Routenplaner"), aber die hat "Toll Collect" nicht (oder gibt die nicht raus).

so muss ich nun jedes mal mit den Fahrern die Tour im Computer
noch mal "abfahren" damit die mir sagen können wo die lang gefahren
sind (besonders im Ruhrgebiet)

wenn jemand also eine Idee hat wie man das Problem besser lösen
kann ... ?

gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Jimmy,

jetzt weißt Du warum die Maut so spät kam. Weil die mit der Programmierung selber nicht klarkamen :?

Aber eine Verständnisfrage: Wenn doch alle möglichen Abzweigungen und Abfahrten bezeichnet sind, kannst Du dann nicht sagen Strecke von AS 23 bis AK 34 auf der BAB 2 und weiter von AK 45 (= AK34 auf der BAB 2) bis AS 47 auf der BAB 3? Dann ist es doch vollkommen egal ob links oder rechts?

Jan
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Beitrag von Markus Walter »

Hallo Tom,

wie sind denn Deine Erfahrungen, was das Finden von Adressen angeht? Ich spiele auch seit einiger Zeit etwas mit MapPoint herum und musste feststellen, dass es auch bei unseren eigenen Kundenadressen (die eigentlich einigermaßen gepflegt sind) immer eine Quote von mindestens 10% gibt, die in MapPoint nicht gefunden werden...

Von der "bescheue..." besonderen Suchlogik in MapPoint ganz zu schweigen:
Such mal nach "Ullrichstraße, 66280 Sulzbach". Diese Straße schreibt sich eigentlich nur mit einem "l". viamichelin.de findet sie trotzdem. Ich könnte ja damit leben, dass MapPoint sie nicht findet und kein Ergebnis liefert. Aber MapPoint liefert 23 Ergebnisse: 15x Sulzbach in ganz Deutschland, einen Eintrag für die PLZ und 7x die Ullrichstraßen, die es in Deutschland gibt.

Das finde ich schon eine sehr seltsame Suche...

Aber vielleicht (hoffentlich) kann ich ja bei Dir noch das eine oder andere lernen. Ich möchte nämlich wenigstens eine einfache Tourenplanung in meine Software einbinden.

Vielleicht können wir uns da mal austauschen?
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Markus.

Ja, man muß bei der Adreßeingabe aufpassen, sonst mäkelt MapPoint an, daß die Tour nicht erzeugt werden kann, weil es keine Fähre zwischen Griechenland und Taiwan gibt. :lol: Wir haben aus diesem Grund ein Orts- und Straßenverzeichnis integriert, und eine "Intellisense", die Straßen- und Ortsnamen beim Eintippen vorschlägt, außerdem Plausibilitätsprüfungen. Die Trefferquote ist bei unseren Kunden deshalb ziemlich hoch.

Klar können wir uns dazu austauschen.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: Aber eine Verständnisfrage: Wenn doch alle möglichen Abzweigungen und Abfahrten bezeichnet sind, kannst Du dann nicht sagen Strecke von AS 23 bis AK 34 auf der BAB 2 und weiter von AK 45 (= AK34 auf der BAB 2) bis AS 47 auf der BAB 3? Dann ist es doch vollkommen egal ob links oder rechts?
tja wenn die sich wirklich daran halten würden wäre es ja auch "zu
einfach". Eigendlich sollten von "Norden" nach "Süden" die Ax-Nummern
grösser werden. Dito von "Westen" nach "Osten", aber dem ist eben
nicht immer so.

Ich kennen nun die BAB 2 nicht so genau ob :
1.) die N->S oder W->O verläuft
2.) AS23 wirklich "<" AK34 (nach Regel)
3.) AK34 = AS45 "<" AS47 ( " " )

also "fahre" ich jetzt von der AK34=AS45 "in beide" Richtungen um zu
sehen wo "AS46" ist. In der Richtung muss ja dann auch "AS47" kommen.

achso ich hatte "vergesssen" zu sagen das "Toll Collect" mir eben NICHT
sagt das es AS,AK,AD sowieo ist sondern er mir "Namen" gibt.
Vonbis :
A1, M³nster-S³d, Kreuz, A43, Bochum, Kreuz, A40, Essen-Ost, Dreiec
k, A52

Abfahrt :
D³sseldorf-Rath (_bergang A 52/B 1)

Km 398.6
gruss by OHR
Jimmy
thomas
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Fr, 23. Sep 2005 16:07
Wohnort: Bad Oldesloe
Kontaktdaten:

Beitrag von thomas »

Hallo Tom und Jimmy.

Eure Beiträge über MapPoint haben mich hellhörig werden lassen,
es auch mal mit ActiveX und MapPoint zu versuchen.
Leider bin ich noch Neuling in Sachen ActiveX und habe keinerlei rfahrung damit.
Könnte Ihr vielleicht einmal ein paar Code- Schnipsel veröffentlichen,
in denen ich erkennen kann, welche CLSID verwendet werden soll oder
wie man eine Landkarte im Fenster anzeigen kann.
Es wäre bestimmt sehr hilfreich für mich.

Gruß
Thomas
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Beitrag von Markus Walter »

Hallo Tom,

hört sich gut an, verwendest Du für diese Funktion MapPoint live oder hast Du die Orts- und Strassennamen exportiert?
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Markus.

MapPoint ist vollständig als Komponente eingebunden; die Anwender sehen quasi nur die Ergebnisse. Das ganze ist nicht vollständig auf meinem Mist gewachsen, einige Grundlagen stammen aus den Samples von Roger Donnays eXPress++, an denen unser Pope wohl auch mitgearbeitet hat.

@thomas: Ich poste mal ein, zwei kleine Beispiele. Die Programmierschnittstelle zu MapPoint ist wirklich übersichtlich. Allerdings habe ich die Version 2006 noch nicht getestet (wir arbeiten mit 2004), und das eigentliche Nachfolgeprojekt soll ja "Virtual Earth" heißen - und Google Earth Konkurrenz machen (wie immer bei M$).
Herzlich,
Tom
Antworten