in Datei schreiben usw



  • Hallo ich habe ein kleines Problem, dass eigentlich nur für mich ein Problem ist, da ich doch etwas ehrgeizig bin. Wir sollten für die Berufsschule ein kleines Programm für ein Hotel schreiben, dass für die Konsole vorgesehen ist. Ich habe dieses mit einem zweidimensionalen Array versehen und konnte dann dank Bibliothek fstream auch super in eine Datei schreibe und diese wieder auslesen. Das Programm diente dazu, dass ein Hotelier Reservierungen für 10 Tage vornehmen kann und auch auf entsprechende Nachfrage die Auslastung bzw. die Besetzung des Hotels anzeigen kann.

    Nun aber mal zu meinem kleinen Problem.
    Ich möchte dieses Programm gern in eine WindowsForms Anwendung umwandeln. Habe mir dazu auch schon eine Form erstellt, komm aber nun mit grundsätzlichen Sachen nicht klar. Wie lese ich den DateTimePicker aus, so dass ich ihn zum Beispiel auf einem Label ausgeben kann? Wie kann ich dann das Datum in eine Textdatei schreiben lassen, die ich zu einem anderen Zeitpunkt auslesen möchte. Kann ich mein Struct, dass ich für die Konsole erstellt habe einfach durch eine Klasse ersetzen und die vorhanden Funktionen als Methoden einsetzen. Kann man aus verschiedenen Textfeldern ein Array füllen, wenn ja wie?



  • Mit was arbeitest du denn? C++/CLI oder Managed C++



  • Du kommst wohl nicht drum herum Dir die Doku zu den einzelnen Klassen anzuschauen...
    Ein Datum würde ich in eine Textdatei in UniversalSortableDateTimePattern-Form schreiben, also:

    DateTime::Now->ToString("u")
    

    Um Textdateien zu schreben verwenden "StreamWriter"; zum lesen entsprechend "StreamReader".

    Dein Strukt kannst Du durch eine Klasse ersetzen, wenn Du willst.

    Und natürlich kannst Du ein Array füllen...

    Was verwendest Du? VS2003 oder VS2005?



  • Hallo ich nehme VS2003.
    Das Auslesen des DateTimePickers hab ich inzwischen hinbekommen mit

    this->label1->Text = this->dateTimePicker1->Value.ToString();
    

    Mein Problem das ich habe, ist das ich nur das Datum benötige - er mir aber die Uhrzeit also alles 0.en anzeigt. Wie lese ich eigentlich gleich nur Tag, Monat und Jahr aus dem String aus?
    Das mit der Dateiausgabe habe ich, wie in dem Konsolenprogramm mit dem fstream gelöst oder ist es mit dem Streamwriter bzw. Streamreader besser? Welchen Unterschied gibt es dembezüglich.
    Die nächste Frage ist wie ich es aus meinem alten Programm herausnehme und eine Klasse bilde. Ich habe einfach eine Klasse hinzugefügt und in sie meine Struktur und die Funktionen aus dem Konsolenprogramm integriert. So wie ich es aber mitbekommen habe, nutzt man im OOP keine Strukturen mehr, sondern Klassen - nur leider habe ich keine Ahnung wie ich meine Datei dann umschreiben kann.



  • derhoeppi schrieb:

    Mein Problem das ich habe, ist das ich nur das Datum benötige - er mir aber die Uhrzeit also alles 0.en anzeigt. Wie lese ich eigentlich gleich nur Tag, Monat und Jahr aus dem String aus?

    this->dateTimePicker1->Value.Day
    this->dateTimePicker1->Value.Month
    this->dateTimePicker1->Value.Year
    

    oder

    this->dateTimePicker1->Value.ToShortDateString();
    

    Schau Dir mal die Doku zu "DateTime" an.

    derhoeppi schrieb:

    Das mit der Dateiausgabe habe ich, wie in dem Konsolenprogramm mit dem fstream gelöst oder ist es mit dem Streamwriter bzw. Streamreader besser?

    Wenn Du .NET-Verwendest ist es halt kein Bruch in der Umgebung... fstream erfordert ein "ausbrechen" aus der managed Welt in die Unmanaged Welt. Auch kann der fstream nur ANSI... StreamWrite kann schon implizit Unicode oder sonstige Encodings.

    derhoeppi schrieb:

    Die nächste Frage ist wie ich es aus meinem alten Programm herausnehme und eine Klasse bilde.

    Ob Du struct oder class nimmst hängt von Deinen Anforderungen ab.

    Den ganzen COde hier zu posten macht kein sinn... oder erwartest Du, das jemand hier das für dich nach .NET umstellt?



  • Nein ich erwarte kein umschreiben von einem von euch.
    Was mich interessiert ist, ob ich es richtig umgeschrieben habe. Ich habe gelernt das eine Klasse aus den Atributen und den Methoden besteht also meinen Funktionen aus dem Konsolenprogramm. Schreibt man die aber nun ich eine KLasse oder jeweils getrennt und wie ruf ich sie auf? Ganz einfach nur beim Aufruf in der Form Funktion(); eingeben oder muss da mehr dazu?



  • Methoden die zu einer Klasse gehören, schreibt man logischerweise in die Klasse!
    Aufrufen tut man die, indem man bei einer Instanz der Klasse diese Aufruft.. also:

    MeineKlasse a;
    a.MeineMethode();
    


  • So ich habe nun ein anderes kleines Problem.
    Wie kann ich aus einer Klasse auf ein ListView zugreifen, dass auf der Form1 liegt. Bei der Klasse ich hab ich die Form1.h includiert. Muss ich dann vor mein listView vielleicht etwas davorsetzen?



  • Du musst halt Deiner Klasse das ListView irgendwie übergeben... Du brauchst eigentlich das "form1.h" da nicht includieren...



  • Und wie übergeb ich das?



  • KingKong3 schrieb:

    Und wie übergeb ich das?

    ???

    void Methode(ListView *lv)
    

    oder

    Konstruktor(ListView *lv)
    

    !???


Anmelden zum Antworten