• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Waypoints per Makro lesen

Schnueffler

Geoguru
Gibt es eine Möglichkeit die Waypoints, die das Oregon in der Datei Current.gpx speichert, per Makro auszulesen bzw. nach bestimmten Namen durchsuchen?
 
OP
Schnueffler

Schnueffler

Geoguru
Da das Lesen der Current.gpx per Makro selber nicht möglich ist, und ich sonst die gesamte Datei parsen müsste, habe ich mich entschlossen, dies über ein kleines C++Programm zu erledigen, in welchem ich TinyXML einsetzte, um die GPX-Datei zu parsen. Gesuchter Text und der Pfad zur current.gpx werden per command line übergeben und am Ende werden die Koordinaten per File zurück an GSAK übermittelt.

Das Programm funktioniert soweit auch sehr gut, solange ich es aus dem Debugger von MS Dev starte. Die current.gpx wird korrekt geparsed und auch die Datei mit den Koordinaten wird erstellt.
Wenn ich das Programm aus GSAK heraus starte, wird die Datei nicht erstellt. Diverse Debugausgaben zeigen, dass alle Parameter korrekt übergeben werden und der Waypoint auch in der current.gpx gefunden wird. Die Datei wird angeblich auch erstellt (diverse Fehlerroutinen liefern keinen ungültigen Pointer zurück). Doch nachdem das Programm durchgelaufen ist, ist im Programm-Verzeichnis keine Datei zu finden. Auch wenn ich in meinem Programm den Pfad absolut angebe, wird keine Datei abgelegt.

Weiss jemand von Euch, woran das liegen könnte? Führt GSAK externe Programme mit einer höheren Sicherheitsszufe aus, so dass ich keine Dateien schreiben kann? Wie funktioniert das Makro RefreshGPX, welches ja die Daten auch von gc.com holt und als gpx-Datei ablegt?
 
OP
Schnueffler

Schnueffler

Geoguru
Ok, ich habe den Fehler gefunden:
Es lag an einer Unicode-Formatierung der command line, die ich nur in der Release-Version eingestellt hatte. Dadurch passten natürlich die string-Operationen nicht mehr. Korrigiert und nun funktioniert es auch von GSAK aus.
 
OP
Schnueffler

Schnueffler

Geoguru
Kann mir jemand sagen, was ich in meinem C++Programm einstellen muss, dass ich keine DOS-Oberfläche mehr bekomme und das Programm direkt im Hintergrund ausgeführt wird, wenn ich es aus GSAK heraus starte?
 

hendyp

Geocacher
Ohne Quellcode und das Wissen über den verwendeten Compiler dürfte das schwierig werden ;) okay, mit beidem auch, dazu liegt meine Windows-Programmierung schon zu lange zurück. :???: Ich glaube mich aber zu erinnern, dass sich eine Anwendung als Windows-Anwendung zu erkennen geben muss und sie dann einfach kein Fenster aufmacht. Die Umstellung dürfte allerdings einen etwas größeren Aufwand erfordern (zusätzliche Bibliotheken, Windows-Systemaufrufe etc.), ich für meinen Teil würde wohl eher mit dem DOS-Fenster leben...

Viele Grüße,
hendyp
 
OP
Schnueffler

Schnueffler

Geoguru
Compiler ist MS Dev 2005
Quellcode schicke ich Dir gerne per Mail, wenn Interesse besteht. Ist aber nichts Wildes

Das Problem ist nicht, dass ein Fenster geöffnet wird. Für jeden überprüften Waypoint wird ein Fenster geöffnet, welches leider erst geschlossen wird, wenn das Makro durchgelaufen ist. Also habe ich bei 10 gefundenen Caches auch 10 Fenster geöffnet. Das stört mich halt ein bißchen.
 

hendyp

Geocacher
Den Quellcode darfst Du mir gerne schicken (eMail-Adresse per PN), aber versprechen kann ich nichts.

Dass die Fenster offen bleiben, wenn das Programm durchgelaufen ist, wundert mich allerdings ein wenig. Vielleicht kannst Du mir das compilierte Programm ja auch noch mitschicken; die von Dir verwendete Umgebung besitze ich nicht.

Wäre es viel Aufwand und sinnvoll, das Programm so umzuschreiben, dass es mehrere Suchtexte als Parameter annimmt? Dann könnte man zumindest die Anzahl der Fenster minimieren und bräuchte möglicherweise (meine Kristallkugel ist nicht ganz so zuverlässig ;) ) die current.gpx auch nur einmal einlesen.

Viele Grüße,
hendyp
 
OP
Schnueffler

Schnueffler

Geoguru
Das Programm wird vom Makro LogImportSQL beim Einlesen der geocache_visits.txt gestartet, wenn der eingelesene Waypoint ein Multi oder Mystery ist. Da die Caches vomMakro aber sequenziell abgerbeitet werden, weiss ich zu dem Zeitpunkt nicht, nach welchen Namen ich sonst noch suchen müsste. Und zum Umbau des gesamte Makros habe ich eigentlich keine Lust, denn dann müsste ich mir die Cachenamen in der sequenziellen Abarbeitung merken, danach erst das Programm aufrufen und dann die zurückgelieferten Daten aus der Datei wieder für jeden Cache extrahieren. Das ist mir ehrlich gesagt zuviel Aufwand. Bevor ich damit anfange, lebe ich lieber mit meinen ganzen Fenster.

Aber das ist eine andere Baustelle. Ich schicke Dir wahrscheinlich morgen mal den Quellcode incl des gesamten Workspaces zu. Dann kannst du mal drüber schauen.
 
Oben