Form Anwendung in Consolen Anwendung umarbeiten, Integer Fehler

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von KAXTJ.

    Form Anwendung in Consolen Anwendung umarbeiten, Integer Fehler

    Hallo,

    ich bin grade dabie eine Also Forms anwendung für eine Consolen anwendung um zu schreiben, und schon das erste Problem, in der Form habe ich mit timern Geabreitet, das habei ich jetzt auch in der Console und den Code aus dem alten timer Entnommen doch leider bekomme ich jetzt eine fehler meldung:

    "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."

    genauer gesagt stehet da auch was von:
    "{"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."}"

    Das problem tritt beim Ausführen auf, in folgendem code:

    VB.NET-Quellcode

    1. Private Sub t_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles t.Elapsed
    2. Dim i As New Integer
    3. Dim Data1 As New Integer
    4. Dim Data2 As New Integer
    5. i = ReadAllDigital
    6. eingang1.Checked = i And 1 'immer an dieser stelle
    7. eingang2.Checked = (i >> 1) And 1
    8. eingang3.Checked = (i >> 2) And 1
    9. eingang4.Checked = (i >> 3) And 1
    10. eingang5.Checked = (i >> 4) And 1
    11. ReadAllAnalog(Data1, Data2)
    12. digitaleingang1.Value = 255 - Data1
    13. digitaleingang2.Value = 255 - Data2
    14. t.Start()
    15. t.Enabled = True
    16. End Sub
    Direkt unter Module module1


    VB.NET-Quellcode

    1. Module Module1
    2. Dim WithEvents eingang1 As System.Windows.Forms.CheckBox
    3. Dim WithEvents eingang2 As System.Windows.Forms.CheckBox
    4. Dim WithEvents eingang3 As System.Windows.Forms.CheckBox
    5. Dim WithEvents eingang4 As System.Windows.Forms.CheckBox
    6. Dim WithEvents eingang5 As System.Windows.Forms.CheckBox
    7. Dim WithEvents t As New Timers.Timer With {.Interval = 1000}
    8. Dim WithEvents t1 As New Timers.Timer With {.Interval = 1000}
    9. Dim WithEvents ausgang1 As System.Windows.Forms.CheckBox
    10. Dim WithEvents ausgang2 As System.Windows.Forms.CheckBox
    11. Dim WithEvents ausgang3 As System.Windows.Forms.CheckBox
    12. Dim WithEvents ausgang4 As System.Windows.Forms.CheckBox
    13. Dim WithEvents ausgang5 As System.Windows.Forms.CheckBox
    14. Dim WithEvents ausgang6 As System.Windows.Forms.CheckBox
    15. Dim WithEvents ausgang7 As System.Windows.Forms.CheckBox
    16. Dim WithEvents ausgang8 As System.Windows.Forms.CheckBox
    17. Dim WithEvents digitaleingang1 As New System.Windows.Forms.VScrollBar
    18. Dim WithEvents digitaleingang2 As New System.Windows.Forms.VScrollBar​

    petaod schrieb:

    Ich sehe nicht, dass die irgendwo instantiiert wird.


    Wie meinst du das? ich kenne mich in der Console eigentlich 0 aus... bin nur leider gezwungen auf diese um zu steigen.

    petaod schrieb:

    Aber wozu brauchst du Checkboxen bei einer Konsolanwendung???
    Und wo willst du die anzeigen?


    Anzeigen gar nicht, sie dienen nur als "Merker" für das programm selber. denn später kommt noch folgendern Code dazu:

    VB.NET-Quellcode

    1. ​Private Sub eingang1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles eingang1.CheckedChanged
    2. If eingang1.Checked Then SetDigitalChannel(1) Else ClearDigitalChannel(1)
    3. End Sub

    KAXTJ schrieb:

    sie dienen nur als "Merker" für das programm selber
    Dann nimm Booleans und nicht Checkboxen.

    KAXTJ schrieb:

    Handles eingang1.CheckedChanged
    Das Event wird nie aufgerufen werden, wenn keiner die Checkbox klicken kann.

    Denke nochmals über das Programmdesign nach und entferne (oder ersetze) alles, was mit Forms zu tun hat.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    KAXTJ schrieb:

    ich bin grade dabie eine Also Forms anwendung für eine Consolen anwendung um zu schreiben
    Welchen Sinn hat das?
    Lass es einfach sein.
    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!
    Eine in Windows Forms eingebettete Konsole reicht nicht??

    KAXTJ schrieb:

    und ein Neues Erscheinungsbild
    Lecker.
    [/OT]
    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!
    Das ist doch ehr ein rückschritt von GUI zu CLI (Console). Ich weiß jetzt nicht wircklich was es für einen sinvollen grund giebt die Windows Forms Anwendungen in einer Console Applicaktioin umzuwandeln. !
    Du könntest Dir auch eine WinForms-Anwendung machen, die so aussieht wie eine Console.
    TextBox, Font, Vorder- und Hintergrundfarbe.
    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!
    Hatte ich auch schon, mit Richtextbox, aber das Ganze ist einfach nicht das gleiche, erstens Fehlt der Blikende Curser, zweitens kommen fehlermeldungen wenn sie nicht behandelt sind (kann app und zu mal vorkommen da ich mit schnittstellen Programierung in diesem Programm arbeite und mit einem FTP Server eine Verbindung zu einer selbst programmierten App auf meinem hady einen Zugriff auf das Programm habe) als Pop app bzw, MSG box und nicht in der richtextbox, in der Console dagegen kommen sie direkt in der Console und Drittens habe ich keinen Weg gefunden nur einzelene Texte die in die Richtextbox geschrieben werden ein zu färben.

    KAXTJ schrieb:

    einzelene Texte die in die Richtextbox geschrieben werden ein zu färben
    geht so:

    VB.NET-Quellcode

    1. Me.RichTextBox1.Text = "kljashdlöashfölhjtzj"
    2. Dim col() = {Color.Red, Color.Green, Color.Blue}
    3. Dim index = 0
    4. For i = 0 To Me.RichTextBox1.Text.Length - 1 Step 3
    5. Me.RichTextBox1.SelectionStart = i
    6. Me.RichTextBox1.SelectionLength = 3
    7. Me.RichTextBox1.SelectionColor = col(index)
    8. index += 1
    9. If index >= col.Length Then
    10. index = 0
    11. End If
    12. Next
    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!
    Danke!

    aber das geht so leider nicht bzw. doch aber es übersteigt den nutzen. man mus sich das so vorstellen, Chat programm (das ist es nicht aber es ist vergleichbar) man schreibt etwas, das soll blau sein, danach schreibt der gegen über das soll rot sein, dazu kommen app und zu noch system infos, die sollen schwarz sein. wenn ich jeden mal bei einer aktion den code sazu machen muss, selbst wenn ich ihn eine klasse setzte wird das zihmlich viel. immerhin muss ich immer wissen welcher teil weilche farbe bekommen soll.

    KAXTJ schrieb:

    Direkt unter Module module1


    VB.NET-Quellcode

    1. Module Module1
    2. Dim WithEvents eingang1 As System.Windows.Forms.CheckBox
    3. Dim WithEvents eingang2 As System.Windows.Forms.CheckBox
    4. Dim WithEvents eingang3 As System.Windows.Forms.CheckBox
    5. Dim WithEvents eingang4 As System.Windows.Forms.CheckBox
    6. Dim WithEvents eingang5 As System.Windows.Forms.CheckBox
    7. Dim WithEvents t As New Timers.Timer With {.Interval = 1000}
    8. Dim WithEvents t1 As New Timers.Timer With {.Interval = 1000}
    9. Dim WithEvents ausgang1 As System.Windows.Forms.CheckBox
    10. Dim WithEvents ausgang2 As System.Windows.Forms.CheckBox
    11. Dim WithEvents ausgang3 As System.Windows.Forms.CheckBox
    12. Dim WithEvents ausgang4 As System.Windows.Forms.CheckBox
    13. Dim WithEvents ausgang5 As System.Windows.Forms.CheckBox
    14. Dim WithEvents ausgang6 As System.Windows.Forms.CheckBox
    15. Dim WithEvents ausgang7 As System.Windows.Forms.CheckBox
    16. Dim WithEvents ausgang8 As System.Windows.Forms.CheckBox
    17. Dim WithEvents digitaleingang1 As New System.Windows.Forms.VScrollBar
    18. Dim WithEvents digitaleingang2 As New System.Windows.Forms.VScrollBar​
    Also wenn das eine Konsole-Anwendung werden soll, dann müssen alle die Checkboxen verschwinden oder durch was anderes ersetzt werden.
    Eine Konsole-Anwendung kann keine Checkbox anzeigen.
    Alles was mit System.Windows.Forms zu tun hat muss weg.