![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Подскажите, пожалуйста, как сделать следующее.
Есть два edita и button. Нужно по нажатию на кнопку что бы координаты из первого поля в минутах и секундах пересчитывались и выводились во второе в виде долей целого числа. Координаты вводятся только в таком виде: например +135 24' 56''/+24 25' 58'' +15 24' 56''/+24 25' 58'' Нужно что бы вывод был такой для этих примеров 24.4327777778, 135.41555555556 24.4327777778, 15.41555555556 Последний раз редактировалось alexsertar, 01.12.2011 в 11:52. |
|
#2
|
|||
|
|||
|
Нужно каким то образом каждому числу присвоить переменную. А далее все в принципе просто. Переводим по формуле х/60 для минут и х/3600 для секунд складываем получаем выводим выводит
Последний раз редактировалось alexsertar, 01.12.2011 в 11:54. |
|
#3
|
|||
|
|||
|
Как я понимаю основная проблема в том чтобы расщепить строку на составные части. Здесь решение. Но сразу предупреждаю
Требует строгого форматирования исходной строки (не допусаются двойные пробелы, нельзя заменить кавычки двойными для секунд) Код:
function StripStr(s:string):extended;
var
Index,i:integer;
z:array[0..2] of string;
begin
s:=Trim(s);
Index:=0;
fillchar(z,SizeOf(z),0);
for i:=1 to Length(s) do
if s[i]=' ' then inc(Index)
else z[Index]:=z[Index]+s[i];
SetLength(z[1],Length(z[1])-1);
SetLength(z[2],Length(z[2])-2);
Result:=StrToFloat(z[0]) + StrToFloat(z[1])/60 + StrToFloat(z[2])/3600
end; |