AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Umrechner von grad, minuten, sekunden zu einer dezimalzahl
Thema durchsuchen
Ansicht
Themen-Optionen

Umrechner von grad, minuten, sekunden zu einer dezimalzahl

Ein Thema von Clavicula · begonnen am 16. Dez 2008 · letzter Beitrag vom 16. Dez 2008
Antwort Antwort
Clavicula

Registriert seit: 16. Dez 2008
1 Beiträge
 
#1

Umrechner von grad, minuten, sekunden zu einer dezimalzahl

  Alt 16. Dez 2008, 21:22
Hallo,
ich habe mal eine frage, und zwar haben wir folgende anweisung bekommen:
Entwerfen sie unter delphi ein programm, welches zur eingabe von grad, minuten und sekunden die dezimahlzahl ausgibt und umgekehrt.

folgenden delphicode habe ich schon:
Delphi-Quellcode:
procedure TForm1.Button1Click(sender: TObject);
var Mn, sc, G, E: Real; //Mn=minuten, Sc=sekunden G=grad, e=ergebnis
begin
Mn:=strtofloat (edit2.text);
Sc:=strtofloat (edit3.text);
G :=strtofloat (edit1.text);
Mn:=Mn/Sc;
Sc:=Sc/3600;
e :=G+Mn+Sc;
Label1.caption:=flaottostr (e);
aber wie kann ich das jz alles umdrehen??man benötigt dafür wohl irgendwie trunc(um die zahl vor dem komma abzuschneiden)

vielen dank schonmal
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#2

Re: Umrechner von grad, minuten, sekunden zu einer dezimalza

  Alt 16. Dez 2008, 21:29
hiho
hast du glück, dass ich das gerade in Info brauche^^ und mir das mal geschrieben hatte
das war jetzt noch vom NMEA-Protokoll einer GPS-Maus,
aber daraus kannst du dir das ja im Prinzip ableiten, musst ggf. halt noch wegkürzen, da im allgemeinen unnötige Sachen durchgeführt werden, wie die Beachtung von Längen o. Breitengrad bzw Nord-und Südhalbkugel sowie Westlich oder Östlich von Greenwich, im Normalfall wird das aber mit Buchstaben angegeben W,O,S,N
schau einfach am besten Mal, konnte den Code bis jetzt noch nicht testen wie ich ihn hier habe, aber im normalfall sollte das gehen, hab die funktion in abgespeckterweise getest und da hat es geklappt,also nur gerade das Umrechnen

Delphi-Quellcode:
function DezToGrad(str:string; breitengrad:boolean):string;
var
stunden:integer; //Stunden
minuten,sekunden: extended; //Minuten und Sekunden - extended, weil beim Umrechnen Gleitkommazahlen benötigt werden
begin
str:=Stringreplace(str,'.',#44,[]); //der Eingabestring enthält einen Punkt, aber damit kann delphi nicht umgehen als Gleitkommazahl
if breitengrad then //Breitengrad oder Längengrad?
  begin
    if pos('-',str)>0 then //Süd- oder Nordhalbkugel?
    begin
      str:=copy(str,2,length(str)); //ggf. das Minus entfernen
      stunden:=90+(90-strtoint(copy(str,1,Pos(',',str)-1))); //Südhalbkugel
      minuten:=strtofloat(str)-stunden; //wandelt den String in Gleitkomma um - die Stunden -> Zahl kleiner 1
      minuten:=minuten*60; // Multipliziere mit 60 für die Minuten zu erhalten
      minuten:=60-minuten;
      sekunden:=minuten-trunc(minuten); // Um die Sekunden zu erhalten -> Zahl kleiner 1
      minuten:=trunc(minuten); // die abgerundet Ganzzahl der Minuten da noch Gleitkomma
      sekunden:=60-trunc(sekunden*60); // Multipliziere mit 60 für die Sekunden und Runden
    end
    else
    begin
      stunden:=strtoint(copy(str,1,Pos(',',str)-1)); //Nordhalbkugel
      minuten:=strtofloat(str)-stunden; //wandelt den String in Gleitkomma um - die Stunden -> Zahl kleiner 1
      minuten:=minuten*60; // Multipliziere mit 60 für die Minuten zu erhalten
      sekunden:=minuten-trunc(minuten); // Um die Sekunden zu erhalten -> Zahl kleiner 1
      minuten:=trunc(minuten); // die abgerundet Ganzzahl der Minuten da noch Gleitkomma
      sekunden:=trunc(sekunden*60); // Multipliziere mit 60 für die Sekunden und Runden
    end;
  end
else
  begin // Längengrad
    if pos('-',str)>0 then // Westlich oder Östlich von Greenwich
    begin
      str:=copy(str,2,length(str)); //ggf. das Minus entfernen
      stunden:=strtoint(copy(str,1,Pos(',',str)-1)); //Östlich von Greenwich
      minuten:=strtofloat(str)-stunden; //wandelt den String in Gleitkomma um - die Stunden -> Zahl kleiner 1
      minuten:=minuten*60; // Multipliziere mit 60 für die Minuten zu erhalten
      minuten:=60-minuten;
      sekunden:=minuten-trunc(minuten); // Um die Sekunden zu erhalten -> Zahl kleiner 1
      minuten:=trunc(minuten); // die abgerundet Ganzzahl der Minuten da noch Gleitkomma
      sekunden:=60-trunc(sekunden*60); // Multipliziere mit 60 für die Sekunden und Runden
    end
    else
    begin
      stunden:=180+(180-strtoint(copy(str,1,Pos(',',str)-1))); //Westlich von Greenwich
      minuten:=strtofloat(str)-stunden; //wandelt den String in Gleitkomma um - die Stunden -> Zahl kleiner 1
      minuten:=minuten*60; // Multipliziere mit 60 für die Minuten zu erhalten
      sekunden:=minuten-trunc(minuten); // Um die Sekunden zu erhalten -> Zahl kleiner 1
      minuten:=trunc(minuten); // die abgerundet Ganzzahl der Minuten da noch Gleitkomma
      sekunden:=trunc(sekunden*60); // Multipliziere mit 60 für die Sekunden und Runden
    end;
  end;
result:=inttostr(stunden)+'° '+floattostr(minuten)+#39+' '+floattostr(sekunden)+#39#39; // Ausgabe erfolgt Stunden° Minuten' Sekunden''
end;

function GradToDez(str:string):string;
var stunden:integer; minuten,sekunden:extended;
begin
stunden:=strtoint(copy(str,1,Pos('°',str)-1));
minuten:=strtofloat(copy(str,Pos('°',str)+1,Pos(#39,str)-1-Pos('°',str)))/60;
sekunden:=strtofloat(copy(str,Pos(#39,str)+2,PosEx(#39,str,Pos(#39,str))+2-Pos(#39,str)))/3600;
result:=floattostr(stunden+minuten+sekunden)+'°';
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz