Hallo Manfred,
vielen Dank für das Lob!
Das Google Maps
API arbeitet komplett asynchron. Alle Callbackmethoden werden also irgendwann - nämlich dann, wenn die Kommunikation mit den Servern von Google abgeschlossen wurde - aufgerufen. Deshalb sollten sämtliche Aufgaben, die auf derartigen Rückgabewerten basieren, in diesen Callbackmethoden abgearbeitet werden. In Deinem Fall bedeutet das, daß die Überprüfung der Werte mittels
if DM.gpsdata_validate() then [...]
innerhalb von
Tfrm_map.GeocoderCallback
stattfinden sollte.
Alternativ könnte man natürlich auch in den Callbackmethoden ein Flag setzen, das dann innerhalb einer Timermethode ausgewertet wird. Das wäre aber nicht besonders elegant und würde - wie alle Pollingverfahren - Rechenzeit verschwenden.
Ab Delphi 2009 lassen sich für derartige Callbackmethoden übrigens auch anonyme Methoden einsetzten, was den Code kompakter und - meiner Meinung nach - besser lesbar macht. In den Demos sind dazu etliche Beispiele enthalten.