Fehler in : Ausführliches TCP und UDP Tutorial

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von HubisVB.

    Fehler in : Ausführliches TCP und UDP Tutorial

    Hallo,

    ich beziehe mich bei diesem Thema auf das Tutorial von Malischh aus dem Jahr 2009. Hier der Link dazu vb-paradise.de/index.php/Thread/?postID=94565#post94565
    Dabei ist mir folgendes aufgefallen. Hat der Code je ohne Mitteilungen funktioniert, oder liegt es an der Kompatibilität zwischen den alten und neuen Versionen von VB.Net?
    Ein Mangel im Tutorial ist, dass die ersten Buchstaben beim Sub-Name jetzt immer groß geschrieben werden müssen. (Konnte ja leicht behoben werden)

    Mitteilungen im VB.Net:

    1. Für die Dim-Anweisungen
    - Dim Client As New TcpClient
    - Dim IP As String = "192.168.111.17"
    - Dim Port As Integer = 4000

    werden Mitteilungen ausgegeben: >> IDE0044 Schreibschutz für Feld festlegen <<

    Korrekturvorschläge von VB.Net: Beispiel: aus ==> Dim Port As Integer = 4000
    soll ==> Private Port As Integer = 4000
    oder ==> ReadOnly Port As Integer = 4000

    Was ist jetzt richtig oder was ist Sinnvoll ?

    Große Hilfe von Microsoft ist auch nicht vorhanden. Klickt man auf die blau geschriebenen Fehlernummer >> IDE0044 << so gelangt man zwar auf ihre Seite, aber da werden die Erklärungen immer nur für die Sprache #C angezeigt :thumbdown:

    Ich weiß, dass man nicht einfach Code kopieren soll. Aber dieses Tutorial besticht durch seine zusätzlichen Erklärungen, für die ich sehr dankbar bin. Gerade so ein Tutorial zeigt uns Anfänger, wie überhaupt ein TCP-Client aufgebaut werden kann. Das der Code an seinen persönlichen Anforderungen angepasst werden muss (auch ein Lernprozess), versteht sich von allein.

    Ein fröhliches Osten
    Gruß
    Hubert

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Wenn es heißt Schreibschutz für Feld festlegen, dann ist es ReadOnly. Liegt daran, dass VS erkannt hat, dass Port einmal wertmäßig festgelegt wird und dann nie wieder, zumindest im bisherigen Programm. Daher:
    ReadOnly Port As Integer = 4000. Ersetze aber besser noch Dim durch Private. Dann ist Dir klar, dass Port nur in der aktuellen Klasse aufrufbar ist. Ist es zwar auch mit Dim. Aber Dim ist diesbezüglich abhängig vom Kontext. In einer Class ist das gleich Private, in einer Structure gleich Public.
    Von daher im Gesamten: Private ReadOnly Port As Integer = 4000
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo,

    ich habe dieses Klasse in mein Hauptprojekt eingefügt. Jetzt bekomme ich ich drei mal die Warnung:

    Warnung CA2213 'FrmNetz_1' enthält das Feld "'FrmNetz_1.Client'", das vom Typ IDisposable ist: 'TcpClient'. Ändern Sie die Dispose-Methode für 'FrmNetz_1', sodass für dieses Feld Dispose oder Close aufgerufen wird. Terminal s:\Programmierung\VbNet-Prog\Terminal\Terminal\Terminal\FrmNetz_1.designer.vb 7 Aktiv ?(

    Braucht ihr hierfür noch zusätzliche Infos? Quellcode könnte ich nachreichen, würde aber ein bisschen dauern (Bin mal kurz außer Hause)

    Fragende Grüße
    Hubert
    Wenn eine Komponente das IDisposable-Interface implementiert (also FrmNetz_1.Client, so wie VS (Visual Studio) sagt, dann ist dem so. Und dann solltest Du auch sicherstellen, dass FrmNetz_1.Client seine Dispose-Prozedur aufruft. Es sollte ggf. reichen, wenn Du im FormClosing-EventHandler diese Sub explizit aufrufst, aber es ist auch möglich, dass das als unzureichend angesehen wird, weil der Compiler nicht sichergehen kann, ob dieser EventHandler auch aufgerufen wird.
    Die Alternative wäre in der FrmNetz_1.Designer.VB-Datei innerhalb der Form-eigenen Sub Dispose die Sub Dispose des Clients aufzurufen. Aber Arbeiten in dieser Datei können bei Fehlern zu derben Problemen führen. Daher Datensicherung oder Finger weg.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo VaporiZed,

    Danke für die Antwort, aber...
    ​Und dann solltest Du auch sicherstellen, dass FrmNetz_1.Client seine Dispose-Prozedur aufruft
    Guter Hinweis, aber wie ruft man eine Dispose-Prozedur auf?
    Es sollte ggf. reichen, wenn Du im FormClosing-EventHandler diese Sub explizit aufrufst​
    wie?

    Sorry, aber da brauche ich leider noch mehr Hilfe...Bitte ;(

    Gruß
    Hubert

    HubisVB schrieb:

    wie ruft man eine Dispose-Prozedur auf?
    DeinClient.Dispose

    VB.NET-Quellcode

    1. Private Sub FrmNetz_1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    2. DeinClient.Dispose
    3. End Sub
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke ,
    leider hat es die drei Warnungen nicht behoben.
    Korrektur:
    Gestern Abend habe ich noch den Client.Dispose eingefügt, aber die drei Warnmeldungen blieben weiterhin vorhanden. Ein bisschen frustriert habe ich dann Schluss gemacht und den Rechner runtergefahren. Heute Morgen schreibe ich noch das negative Ergebnis ins Forum und starte VB.Net.
    Was muss ich sehen, die Warnhinwiese sind weg. ?( Es stellt sich natürlich die Frage, warum nicht schon gestern Abend? Fragen über Fragen

    Hallo @VaporiZed, ein herzliches Dankeschön für die Unterstützung

    Noch frohe Ostern

    Gruß
    Hubert

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „HubisVB“ ()