Editfeld

shader09

Erfahrenes Mitglied
Schönen guten Morgen,
Ich habe mir ein Datums- und Zeiteinstellungsprogramm geschrieben.
Jetzt ist aber noch ein kleines Problem, ich will die Zahlen 0-9 nicht so angezeigt
bekommen, sondern wenn die Zahl einstellig ist eine 0 davor haben.
Also das dass dann immer so aussieht 00-09.
Könnte mir da jemand ein Lösungsvorschlag anbieten, kein kompletten Code.
Nur eine Hilfestellung. Danke
 
- Zahl zur Ausgabe in einen String konvertieren
- Stringlänge ermitteln
- Stringlänge == 1? Dann als neuen String '0' + alten String verwenden.
 
Danke für die Antwort. Ich habe es jetzt so, aber irgendwie will die 0 nicht.

Code:
CString lNull = "0";	
if (lStunden.GetLength() == 1)
{
  lStunden = lNull + lStunden;
}


Woran könnte das liegen!? Oder muss ich lNull mit lStunden mit
Hilfe von strcpy verbinden!?
 
Wenn lStunden vom Typ CString ist, dann müsste das eigentlich funktionieren. Genau so habe ich das nämlich auch im Zuge von manuellen Timestamps in meinem Projekt (Visual C++ 6.0, MFC).
 
Ja lStunden ist auch vom Typ CString.
Kann das vielleicht sein, weil ich eMbedded Visual C++ 4.0 benutze!?
Also muss ich es dann wahrscheinlich mit strcpy machen oder!?
 
Hi.

Du könntest mit CString auch die Format Methode benutzen (obwohl ich nicht sicher bin, ob es die auch bei embedded Visual C++ gibt):
C++:
int stunden = 5;
int minuten = 3;
CString str;

str.Format("%.2d:%.2d", stunden, minuten);
Gruß
 
Ich hab das jetzt mit dem format Befehl gemacht;

Code:
lStunden.Format(_T("%.2s"), lStunden);


Nur die Zahl trotzdem einstellig. Nichts ändert sich. Warum!?
Und wenn ich es so mache;

Code:
lStunden.Format((const unsigned short *)"%.2s", lStunden);


Kommen in die Variable 2 Fragezeichen.
 
Zuletzt bearbeitet:
Ich hab das jetzt mit dem format Befehl gemacht;

Code:
lStunden.Format(_T("%.2s"), lStunden);


Nur die Zahl trotzdem einstellig. Nichts ändert sich. Warum!?
Du brauchst die Stunden usw. nicht erst extra in CStrings umwandeln. Du hast die Zeitangaben doch sicher als Zahlenwerte, oder?
Und wenn ich es so mache;

Code:
lStunden.Format((const unsigned short *)"%.2s", lStunden);
Kommen in die Variable 2 Fragezeichen.
Weil du dort unvernünftig castest. So funktioniert es nicht.

Gruß
 
Du brauchst die Stunden usw. nicht erst extra in CStrings umwandeln. Du hast die Zeitangaben doch sicher als Zahlenwerte, oder?

Ich brauch die als CString, weil Ich die ja aus dem Editfeld auslese. Und dieser fordert CString.
Code:
GetDlgItemText(IDC_EDT_STU,lStunden);

Ich habe für die Stunden ein einzelnes Editfeld, für die Minuten ein einzelnes Editfeld.
Mit Buttons (einmal +, einmal -) kann man dann die Stunden/Minuten erhöhen/verringern. Das man das ein bisschen besser versteht.


Weil du dort unvernünftig castest. So funktioniert es nicht.

Das habe ich dann einfach aus Verzweifelung gemacht bzw. einfach mal
ausprobiert*g*
 
Zurück