Autor |
Beitrag |
Tabakbrummel
      
Beiträge: 124
win 7
Turbo Delphi, VS 20010 Express
|
Verfasst: Mo 14.05.07 13:44
Hallo
Mein Problem ist, ich habe ein string z.b. 52° 31"(°=grad und "= min) und möchte ihn in 52,31 Formatieren.
_________________ MfG
Tabakbrummel
|
|
freak4fun
      
Beiträge: 604
Erhaltene Danke: 4
Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
|
Verfasst: Mo 14.05.07 14:01
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function Transform(AString: String): String; begin Result := StringReplace(AString, '° ', ',', [rfReplaceAll]); Result := StringReplace(Result, '"', '', [rfReplaceAll]); end;
procedure TForm1.Button3Click(Sender: TObject); begin ShowMessage(Transform('52° 31"')); end; |
MfG
freak
_________________ "Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
|
|
Tastaro
      
Beiträge: 414
Erhaltene Danke: 23
|
Verfasst: Mo 14.05.07 14:04
Öhm - warum willst du das so umwandeln?
51°31" <> 51,31°
Beste Grüße
Tastaro
|
|
Tabakbrummel 
      
Beiträge: 124
win 7
Turbo Delphi, VS 20010 Express
|
Verfasst: Mo 14.05.07 14:36
Hallo Tastaro
Ich möchte die 53°31" in 52,31 umwandeln, weil ich mit Gleitkomma-Typen weiter rechne.
Die 53°31" werden nämlich im MaskEdit eingegeben(__°__" sind fest im MaskEdit).
_________________ MfG
Tabakbrummel
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Mo 14.05.07 14:52
Hallo,
wenn ich in das MaskEdit eingeben müsste, würde ich Minuten angeben und nicht den Dezimalanteil.
Damit stehen Dir beide Möglichkeiten offen:
//blCalc = True, dann Minuten umrechnen
Delphi-Quelltext 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:
| function GradStrToFloatStr(s: String;blCalc: Boolean): String; var z,i : Integer; e,ee : Extended; begin SetLength(Result,Length(s)); i := 1; for z := 1 to Length(Result) do if s[z] in ['0'..'9','°'] then begin if s[z] = '°' then Result[i] := ',' else Result[i] := s[z]; inc(i); end; SetLength(Result,Pred(i)); if (blCalc) and (Result <> '') then begin e := StrToFloat(Result); ee := Frac(e)/0.6; Result := Format('%f',[Trunc(e)+ee]); end; end;
showmessage(GradStrToFloatStr('12° 34"',True)); |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Tabakbrummel 
      
Beiträge: 124
win 7
Turbo Delphi, VS 20010 Express
|
Verfasst: Mo 14.05.07 15:05
Hallo Alle
Erst mal Danke für die vielen Antworten.  Es funktioniert, noch mal vielen Dank.
_________________ MfG
Tabakbrummel
|
|
|