1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| function ConvertCoordinatesD(sCoord:String):Single;
var pSec, pMin, pDeg : Integer;
Dir, sSeconds, sMinutes, sDegres : String;
dSeconds, dMindec, dMinutes, dDegres : Single;
begin
pSec:= 0;
pMin:= 0;
pDeg:= 0;
dMindec:= 0;
sCoord := ReplaceText(sCoord, ' ', '');
Dir := Copy(sCoord, 1, 1);
// récupération des positions des divers symboles "; .; '; ° ou *
if Pos('"', sCoord) <> 0 then
pSec:= Pos('"',sCoord);
if Pos('''', sCoord) <> 0 then
pMin:= Pos('''',sCoord)
else
PMin:= Pos('*', sCoord);
if Pos('°', sCoord) <> 0then
pDeg:= Pos('°', sCoord);
if Pos('*', sCoord) <> 0 then
pDeg:= Pos('*', sCoord);
if pSec <> 0 then
begin
sSeconds:= Copy(sCoord, pMin + 1, (pSec - pMin)-1);
dSeconds:= StrToFloat(sSeconds);
dMindec:= dSeconds/60;
end;
if (pMin <> 0)
and(pSec = 0) then
sMinutes:= Copy(sCoord, pMin + 1, Length(sCoord)-1)
else if (pMin <> 0)then
sMinutes:= Copy(sCoord, pDeg + 1, (pMin - pDeg)-1);
dMinutes:= StrToFloat(sMinutes);
dMindec:= (dMinutes + dMindec)/60;
sDegres:= Copy(sCoord, 2, (pDeg - 2));
dDegres:= StrToFloat(sDegres);
Result:= dDegres + dMindec;
end; |
Partager