Para las operaciones con ángulos dados en cadenas en formato grados, minutos, segundos, lo que habría que hacer es la conversión de la cadena a grados en formato centesimal. Operar y convertir de nuevo a formato cadena.
La conversión a cadena está resuelta. dejo el código para el paso de la cadena a grados centesimales:
Código Delphi
[-]
function StrDigit(Str: String; i: integer): String;
var
n, m: integer;
begin
n:= 1; m:= 1;
while i>0 do
begin
n:= m;
while not (Str[m] in ['0'..'9', '.', ',']) do inc(m);
while (Str[m] in ['0'..'9', '.', ',']) do inc(m);
dec(i);
end;
while not (Str[n] in ['0'..'9', '.', ',']) do inc(n);
Result:= Copy(Str, n, m-n);
end;
function StrToAngle(Str: String): Extended;
var
d, m: integer;
s: Extended;
begin
d:= StrToIntDef(StrDigit(Str, 1), 0);
m:= StrToIntDef(StrDigit(Str, 2), 0);
s:= StrToFloatDef(StrDigit(Str, 3), 0);
Result:= d + m/60 + s/3600;
end;
Lo siguiente es operar y pasar a cadena en formato grados, minuto, segundos.
Otra cuestión es si queremos pasar los grados al primer cuadrante, si sirven valores negativos, etc...
Saludos.