Bei Programmende noch in Datei schreiben

  • VB.NET

Es gibt 39 Antworten in diesem Thema. Der letzte Beitrag () ist von CraniPhil.

    Bei Programmende noch in Datei schreiben

    Hallo Leute,
    Ich habe ein Problem und zwar bin ich dabei, ich eine Art "Timer" zu programmieren. Wenn ich das Tool/Programm schließe, soll der Text "Datum - Uhrzeit ||Feierabend||" stehen.
    Wie das mit einem speziellen Button funzt hab ich. Nur beim "normalen" beenden des Programm mit dem allseits bekannten x-Button möchte ich das auch.
    Danke im Vorraus :)
    CraniPhil
    Dann gehst du in die Online-Hilfe, suchst nach der Klasse Form und stöberst dort mal durch die Ereignisse. Vielleicht stößt du dann auf so interessante Sachen wie FormClosing oder FormClosed.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Hier ist zu differenzieren... Programmende oder "Form-Ende" :D
    In dem Zusammenhang wiederum recht interessant ob das Programm beendet wird, wenn die Startform geschlossen ist oder wenn alle Formen zu sind.

    Es gibt nämlich ein wirkliches "Programmende" welches in den "Anwendungsereignissen" als Event zu finden ist.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Das Programm soll beendet werden. Nach dem Motto "Klappe zu Affe tot".
    Ich hab auch 'nen Button mit dem das funzt, möchte aber diese "Funktion" auch beim schließen mit dem "normalen" Schließen-Button.


    !!EDIT!!
    Hat funktioniert!
    Danke :)
    Für alle die's interessiert:


    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    PfadLeer()
    ereignis = "Feierabend"
    zeitUndKommentarSchreiben()


    End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CraniPhil“ ()

    Also... Dein Programm besteht so wie ich dich verstehe nur aus einer Form?
    Das muss ja nicht so sein. Ich mache andere Dinge, wenn bei mir eine Form geschlossen wird, als wenn das ganze Programm geschlossen wird.
    Zudem ist es ne Einstellungssache, ob du dein Programm schließen lässt, wenn die Startform geschlossen wird, oder wenn die letzte Form geschlossen wird.


    Form Close:

    Visual Basic-Quellcode

    1. Private Sub Verwaltung_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. 'Hier der Code
    3. End Sub


    Programm Schließen:

    Visual Basic-Quellcode

    1. Private Sub MyApplication_Shutdown(sender As Object, e As System.EventArgs) Handles Me.Shutdown
    2. 'Hier dein Code
    3. End Sub

    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    @CraniPhil
    Dann solltest Du darauf achten, dass beim Schließen von sekundären Forms nicht Daten verloren gehen, die Du eigentlich speichern willst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    CraniPhil schrieb:

    Aber die Daten werden in eine .txt-Datei geschrieben
    Nicht Wohin sondern Woher.
    Wenn Du in Form17 Daten bereitstellen willst und die Form17 wird geschlossen, sind dei Daten futsch.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Da wären wir wieder bei der Frage...
    Ist wirklich das "Programmende" gemeint?
    Ich habe nämlich so vom Bauchgefühl her die Ahnung, dass du hier das Programmende mit nem Form-Close verwechselst.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    MemoAnMichSelbst schrieb:

    Da wären wir wieder bei der Frage...
    Ist wirklich das "Programmende" gemeint?
    Ich habe nämlich so vom Bauchgefühl her die Ahnung, dass du hier das Programmende mit nem Form-Close verwechselst.
    Das wäre standardmäßig ja auch nicht unbedingt falsch. Wenns eh nur 1 Form gibt sowieso, aber selbst bei mehreren Forms ist die Standard-Einstellung so, dass das Schließen des MainForms das Programmende bedeutet.

    Klar gibts da noch annere Ansätze, entweder mittm Anwendungsereignis, oder auch mit einer Sub Main zu arbeiten, aber für so Wald-und-Wiesen-Anforderungen kann man auchs Form_Closed als Programm-Ende auffassen.

    CraniPhil schrieb:

    ist mir VORERST mal noch egal
    Wenn Du das Objekt, das die WOHER-Daten hält, löschst, bevor sie gespeichert sind, gibt es kein WOHER mehr.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Okay diesmal hab ichs aber wirklich :D


    Quellcode

    1. Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    2. If speicherpfad.FileName <> "" = True Then
    3. ereignis = "Feierabend"
    4. zeitUndKommentarSchreiben()
    5. End If
    6. End Sub

    Danke für eure Hilfe

    CraniPhil schrieb:

    VB.NET-Quellcode

    1. If speicherpfad.FileName <> "" = True Then

    CraniPhil schrieb:

    wirklich
    komisch. Machma

    VB.NET-Quellcode

    1. If speicherpfad.FileName <> "" Then
    oder gleich richtig:

    VB.NET-Quellcode

    1. If Not String.IsNullOrEmpty(speicherpfad.FileName) Then

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    im grunde keiner, nur deine Variante ist unleserlich, weil man bei deiner Reihung von Operatoren bisserl über die Vorrang-Frage stutzt, also ob nun
    (speicherpfad.FileName <> "") = True
    gemeint ist, oder
    speicherpfad.FileName <> ("" = True)

    Generell sind Vergleiche mit True sinnlos redundant, es ist gewissermassen die Frage: "Ist es wahr, dass es wahr ist, dass...." - anstatt einfach zu fragen: "Ist es wahr, dass..."

    ErfinderDesRades schrieb:

    speicherpfad.FileName <> ("" = True)
    lässt der Compiler bei Strict On gar nicht erst zu.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ist Speicherpfad bei dir nen SaveFileDialog?
    Wenn ja kannst doch direkt im Aufruf prüfen ob was ausgewählt wurde.

    Visual Basic-Quellcode

    1. Dim sfd As New SaveFileDialog
    2. If sfd.ShowDialog = DialogResult.OK Then
    3. MessageBox.Show(sfd.FileName)
    4. End If
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D