TDateTime frage



  • Hallo,

    ich wollte ein stringGrid mit wochentagen füllen (ColCount sind 8, fange ab der ersten spalte an zu schreiben nicht ab 0) und in der zweiten spalte schreibt er mir zum beispiel "MittwochDonnerstag" und danach "Donnerstag". weiss jemand woran das liegt?

    char days[7][10] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" };
    TDateTime dtDate;
    dtDate = DateTimePicker1->DateTime;
    dtDate--;
    for(i = 1; i < StringGrid1->ColCount; i++)
    {
        dtDate++;
        StringGrid1->Cells[i][0] = days[dtDate.DayOfWeek()-1];
    }
    

    Gruß Gerd



  • Hallo

    zähl mal die Buchstaben der Tagesnamen nach, und vergleich die mit deinen Arraygrenzen, und denk daran das C-Strings immer ein Zeichen mehr brauchen.

    char days[7][11] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" };
    

    bis bald
    akari



  • ok, danke dir, das stimmt natürlich! *schäm*

    aber der fehler steckt dann hier:

    Hilfe von Borland:

    Zu diesem Beispiel gehören ein Eingabefeld, eine Beschriftung (Label) und eine Schaltfläche. Wenn der Benutzer ein Datum in dem den Einstellungen in der Systemsteuerung entsprechenden Format (für USA: MM/TT/JJ) eingibt, wird dieser String in einen TDateTime-Wert konvertiert. Dieser Wert wird dann zum Anzeigen des Wochentages verwendet.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      char days[7][10] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" };
      TDateTime dtDate = StrToDate(Edit1->Text);
      ShowMessage(Edit1->Text + AnsiString(" ist ein ") + days[dtDate.DayOfWeek() - 1]);
    }
    

    trotzdem hätte ich es mal überprüfen sollen! 🙂
    (habe auch nicht an \0 (NUL) gedacht!)

    gruß gerd


Anmelden zum Antworten