Entwickler-Ecke

Sonstiges (Delphi) - FormatDateTime zeigt immer 10:20 Uhr an


der organist - Do 09.10.08 18:50
Titel: FormatDateTime zeigt immer 10:20 Uhr an
Vllt ist es nicht ganz der richtige ort im Delphi Forum, aber ich denke, dass ihr das Problem schnell und gut lösen könnt..

Ich habe ein Programm, das folgende Prozedure enthält:


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:
procedure TForm1.CreateAnMap;
var MTime, HTime : String;
    Anzring : Array [1..7of Integer;
    i, j, Gesdeltas, Restarea : Integer;
begin
  AnMap.LoadFromFile(path+'\model.bmp');
//Minuten
  //für jeden Ring (a)berehcnen, wie viele Deltas
    //Zeit der nächsten Minute in Strings extrahieren
  MTime := FormatDateTime ('dd.mm.yyyy / mm:hh', now){[14]+
           FormatDateTime ('dd.mm.yyyy / mm:hh', now)[15]}
;
  HTime := FormatDateTime ('dd.mm.yyyy / mm:hh', now)[17]+
           FormatDateTime ('dd.mm.yyyy / mm:hh', now)[18];
  //andere Rechnungen
  //Gesdeltas := Trunc((StrToInt(MTime)+1)/5);
  Label10.Caption := MTime;
  //Restarea := StrToInt (MTime) mod 5;

  //               (b)mit entsprechender Farbe füllen
   { for j := 0 to Gesdeltas - 1 do begin  // -1,weil wir bei 0 anfangen!!
      for i := 1 to 5 do begin
        AnMap.Canvas.Brush.Color:= CFarbe[i];
        AnMap.Canvas.FloodFill(Delta[j][i].X,Delta[j][i].Y,ClWhite,FsSurface);
      end;
    end;   }


  AnMap.SaveToFile(path+'\AnMap.bmp');
end;


Sorgt euch nicht um das ausgeklammerte, dass habe ich bei der Fehlersuche genutzt. Mein Label10 soll mir nun einfach den Zeitstring anzeigen, was es auch brav macht. Nun kann ich aber neu booten und Zeit setzen wie ich will, es zeigt immer 10:20 an....auch wenn meine kleine Windowsuhr in der rechten unteren Ecke 20:49 anzeigt....Brauche dringen Hilfe!

Gruß, der organist


Nico72 - Do 09.10.08 18:59

Hallo,

im FormatDateTime-FormatString werden die Minutenplatzhalter mit "n" angegeben. Also

Delphi-Quelltext
1:
MTime := FormatDateTime ('dd.mm.yyyy / nn:hh', now)                    


Der Platzhalter "m" steht für Monat. Deswegen auch 10:20. (Aktueller Monat: Aktuelle Stunde). Wobei es bei mir noch vor Acht ist..


der organist - Do 09.10.08 19:06

(a) Vielen Dank für die schnelle Hilfe...
(b) Vllt habe ich mich heute abend nur vertan, aber bisher hat das immer mit mm:hh funktioniert...egal
(c) Mit dem kurz vor Acht und kurz vor neun, das hat damit zu tun ich ich momentan in Finnland sintze (Auslandsjahr) und
und wir hier eine Stunde früher zu Mittag essen...


Blawen - Do 09.10.08 19:06

In der Regel kommt die Stunde vor der Minute:

Delphi-Quelltext
1:
MTime := FormatDateTime ('dd.mm.yyyy / hh:nn', now);                    


Nico72 - Do 09.10.08 19:10

Es soll lt. Hilfe auch mit "m" funktionieren, aber nur, wenn er es aus dem Format als Minuten erkennt. Also bei einem Standardformat wie hh:mm:ss. Mit "n" nimmt er es aber immer, also am besten gleich angewöhnen. :wink:


Blawen - Do 09.10.08 19:13

user profile iconNico72 hat folgendes geschrieben Zum zitierten Posting springen:
Es soll lt. Hilfe auch mit "m" funktionieren, aber nur, wenn er es aus dem Format als Minuten erkennt. Also bei einem Standardformat wie hh:mm:ss. Mit "n" nimmt er es aber immer, also am besten gleich angewöhnen. :wink:
In meiner D2006 Hilfe habe ich keine solche Aussage entdeckt...


Nico72 - Do 09.10.08 19:18

Meine Borland Studio 2006 Hilfe zu FormatDateTime:
Zitat:

...
m
Zeigt den Monat als Zahl ohne führende Null an (1-12). Wenn auf den Bezeichner m unmittelbar der Bezeichner h oder hh folgt, werden an Stelle des Monats die Minuten angezeigt.

mm
Zeigt den Monat als Zahl mit führender Null an (01-12). Wenn auf den Bezeichner mm unmittelbar der Bezeichner h oder hh folgt, werden an Stelle des Monats die Minuten angezeigt.
...


der organist - Do 09.10.08 19:23

naja, diese Wenn-geschichte kann man ja einfacher umgehen...Wichtig ist, dass es jetzt funktioniert.
Und ich weiss auch wieder, woher ich das mit dem 'm' habe. Suche hier im Forum.....