Entwickler-Ecke

Sonstiges (Delphi) - Wie kann man die Anzahl Stellen definieren?


Tabakbrummel - Mo 21.08.06 12:14
Titel: Wie kann man die Anzahl Stellen definieren?
Hallo

Mein Problem ist das die Werte nicht immer zweistellig, d.h. bis 9 fehlt die führende Null (die ich gerne hätte), aber leider kommt da die Fehlermeldung 'Format '%.2d' ungültig oder nicht kompatibel mit Argument'. Wie kann man das ändern?


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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
procedure TForm4.Button7Click(Sender: TObject);
var
  Laenge : Extended;//Längengrad des Standorts, Bogenmaß
  Breite : Extended;//Breitengrad des Standorts, Bogenmaß
  h : Extended;//Korrekturfaktor für Lichtbeugung in Horizontnähe
  Deklination : Extended;
  Zeitdifferenz : Extended;
  Zeitgleichung : Extended;
  Woz_a : Extended;//wahre Ortszeit Sonnenaufgang
  Woz_u : Extended;//wahre Ortszeit Sonnenuntergang
  Moz_a : Extended;//mittlere Ortszeit Sonnenaufgang
  Moz_u : Extended;//mittlere Ortszeit Sonnenuntergang
  T : Extended;//Tageszahl, 1.Jan=1, 31.Dez=365 bzw. 366
  Aufgang_Std, Aufgang_Min : Extended;
  Untergang_Std, Untergang_Min : Extended;
begin
  LaengenGradberechnung;
  BreitenGradberechnung;
  Laenge:=StrToFloat(SpinEdit24.Text);
  Breite:=StrToFloat(SpinEdit25.Text);
  T:=Jahrestage;
  h:=-0.0145;//Konstante, 50 Bogenminuten
  Deklination:=0.40954*sin(0.0172*(T-79.349740));
  Zeitdifferenz:=12*arccos((sin(h)-sin(Breite)*sin(Deklination))/(cos(Breite)*cos(Deklination)))/Pi;
  Zeitgleichung:=-0.1752*sin(0.033430*T+0.5474)-0.1340*sin(0.018234*T-0.1939);
  Woz_a:=12-Zeitdifferenz-Zeitgleichung;
  Woz_u:=12+Zeitdifferenz-Zeitgleichung;
  Moz_a:=Woz_a-Zeitgleichung+((15-Laenge)*4/60);
  Moz_u:=Woz_u-Zeitgleichung+((15-Laenge)*4/60);
  Aufgang_Std:=Int(Moz_a);
  Aufgang_Min:=Int(60*(Moz_a-Int(Moz_a)));
  Panel12.Caption:=Format('%.2d',[FloatToStr(Aufgang_Std)])+':'+Format('%.2d',[FloatToStr(Aufgang_Min)]);
  Untergang_Std:=Int(Moz_u);
  Untergang_Min:=Int(60*(Moz_u-Int(Moz_u)));
  Panel13.Caption:=FloatToStr(Untergang_Std)+':'+Format('%.2d',[FloatToStr(Untergang_Min)]);
end;


Kaoro-kun - Mo 21.08.06 12:37

Also, Ich weiss nicht, ob es dir etwas bringt, aber uns brachte man Stellenformatierung wie folgt bei:
Beispiel:
c:=a+b
label1.caption:=floattostrf(c,fffixed,<Stellen vor Komma>,<Stellen nach Komma>);
Ich hoffe Ich war eine Hilfe. :)
Regards,
Kao


Lannes - Mo 21.08.06 12:43

Hallo,

Format('%.2d',[FloatToStr(Aufgang_Std)])

d steht für Dezimal, der Code übergibt aber mit FloatToStr einen String, also "nicht kompatibel mit Argument'"
Direkt den Integer übergeben :arrow:

Delphi-Quelltext
1:
Format('%.2d',[Aufgang_Std])                    


Tabakbrummel - Mo 21.08.06 12:43

Hallo

Ich meinte keine Kommastellen. Mein Problem ist, wenn ich auf den Buttob clicke kommt 9:9 raus aber ich will das 9:09 herraus kommt.


Tabakbrummel - Mo 21.08.06 12:49

Hallo Lannes

Jetzt kommt die Fehlermeldung Inkompatible Typen: 'Integer' und 'Extended'.


Martok - Mo 21.08.06 12:54

Ähm, Hilfe lesen?

%d ist für Integer, für Float-Werte ist %f. Also ist für dich das richtige Format %.2f


Tabakbrummel - Mo 21.08.06 13:29

Hallo

Ich habe es hin bekommen. Und vielen Dank für die Antworten.