Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
Habe mir das nun so umgebaut und so funktioniert es für meine zwecke:
type
TGeoData = record
NSOrientation: char;
NSDegree: integer;
NSMinutes: string;
EWOrientation: char;
EWDegree: integer;
EWMinutes: string;
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
ja bei Geo Koordinaten gilt:
N 49° 8.66 E 8° 31.672 = N 49° 08.066 E 8° 31.672
Ist ja logisch es ist ja 8.66 also achttausendsechundsechzig, würde die null dahinter kommen N 49° 8.660 E 8° 31.672, wäre es ja achttausensechHUNDERTsechundsechzig und wäre ganz wo anders :)
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
ok, dann werde ich einfach die anzahl der ziffern prüfen und wenn <3 dann füge ich eine 0 voran.
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
DecimalSeparator := '.';
showmessage(Format('%s %.2d%s %.3f %s %.3d%s %.3f', ));
So geht es. Danke für deine Geduld!
Leider macht er aus:
N 49° 41.66 E 8° 31.672
N 49° 41.660 E 8° 31.672
richtig wäre:
N 49° 41.066 E 8° 31.672
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
Hier bekomme ich nur eine 1 als Ergebnis.
War das Ergebnis 12.346 aus dem letzten Test nicht ok?
Ich habe mal Data.EWMinutes := 41.278; direkt zugewiesen und mit Format ausgegeben. es wird immer noch nur die 1. stelle angezeigt. Ich komme nicht dahinter an was es liegt.
Edit:// wenn ich ShowMessage(Format('%.3f', )); mache dann funktioniert es!
Edit://
So geht es:
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
Ergebnis=12.346
Kann es vlt. am , liegen bei data.NSMinutes (41,766) ?
Delphi 5? Habe Delphi 2009
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
Ja C&P. Bei mir gibt es aber Settings := TFormatSettings.Create; und auch TFormatSettings.Create(LOCALE_USER_DEFAULT); nicht! Die Zeile habe ich weggelassen.
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
Die Routine passt aber fast genau für mich, daher habe ich mich dieser bemächtigt :)
Es waren ein paar kleine Tippfehler drin, die habe ich verbessert. aber warum der nur die 1. stelle anzeigt verstehe ich nicht.
data.NSMinutes enthält 41,766 es liegt am Format Befehl.
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
Danke für die Routine!
data.NSMinutes und Data.EWMinutes zeigt er aber nur die 1. stelle an, also eine 4 bzw 3. Wüsste nicht woran das liegt..
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
Also so etwa:
1. alle leerzeichen löschen = N49°41.766E8°31.672
2.nach E oder O suchen und den String in 2 Stücke teilen = "N49°41.766" und "E8°31.672"
3.prüfen ob 1. Buchstabe ein N oder S ist... weiter
4. prüfen an wievielter stelle das ° Zeichen kommt. kommt es an 3. stelle dann eine 0 vor anfügen ansonsten alles ok. macht aus N9° ~ N09° oder aus E8° ~ E008°
5. prüfen an wievielter stelle...
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
so ungefähr hatte ich mir das auch vorgestellt. aber wie geht das am einfachsten?
grad= copy(koordstr,2,2) und dann mit pos prüfen ob ein ° Zeichen enthalten ist ?? und dann entsprechend reagieren?
Mir kommt dieser Weg etwas umständlich vor. Das geht doch bestimmt einfacher, oder?
Forum: Object-Pascal / Delphi-Language
Delphi
by BBoy,
26. Mär 2013
Ich habe in einem String Geo-Koordinaten in der form von: N 09° 42.756 E 008° 30.061
Zumindest sollten die so aussehen bevor sie weiterverarbeitet werden.
Nun kann es aber passieren das der String die Koordinaten nicht in der optimalen Schreibweise enthält. Hier mal ein paar Varianten:
N 09° 41.766 E 8° 30.061 < E 8° statt 008°
N 9° 42.756 E 008° 30.061 < nur eine einstellige Ziffer bei 9...