Klasse / Konstruktor (VB.net)

Speedkill

Erfahrenes Mitglied
Hallo Leute !

Ich habe eine Klasse Dateihandler geschrieben mit der eigenschaft Dateipfad. Beim initialisieren in einer anderen Klasse möchte ich den Dateipfad übergeben und habe deshalb in der Klasse Dateihandler eine public sub new() Methode erstellt. Aber diese ruft er nie auf. Hat jemand ne Ahnung was ich falsch mache ?

Der Aufruf untenstehender Klasse mache ich mit:

Code:
Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
  		Dim Text As String
  		Text = txtEingabe.Text()
  		Dim derLeser As New Dateihandler(Text)
  		txtTestausgabe.Text() = derLeser.zlesen
  		txtTestausgabe.Update()
  	End Sub

Dabei holt er den Text aus einem Eingabefeld txtEingabe in welchem auch etwas drinsteht.
Die Klasse selber sieht so aus.
Code:
Imports System.IO
   
   
   Public Class Dateihandler
   
   
   	Private strDateipfad As String
   
   
   	Public Sub New(ByVal datei As String)
   		strDateipfad = datei
   		MessageBox.Show("Text: " & strDateipfad)
   	End Sub
   
   
 	Private FStream As New FileStream(strDateipfad, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)
   	Private SReader As New StreamReader(FStream)
   
   
   	Public Function zlesen() As String
   		Return SReader.ReadLine()
   	End Function
   
   
   End Class

Er meckert immer bei FStream daß strDateipfad nicht leer sein darf. Klar wenn er die sub nicht aufruft. Aber warum macht er das nicht ?

Danke schonmal.
Speedy
 
Es gibt auch ein Visual Basic .NET Forum.
Der Konstruktor ist so schon richtig, nur die Deklaration war nicht ganz richtig bzw. du erzeugst zu früh die neuen Streamobjekte.

Mach es mal so:
Code:
   Public Class Dateihandler
   
   
   	Private strDateipfad As String
         Private FStream As FileStream
   	Private SReader As StreamReader
   
   	Public Sub New(ByVal datei As String)
   		strDateipfad = datei
   		MessageBox.Show("Text: " & strDateipfad)

                         Set FStream = New FileStream(strDateipfad, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)
   	            Set SReader = New StreamReader(FStream)
   	End Sub
   
   	Public Function zlesen() As String
   		Return SReader.ReadLine()
   	End Function
   
   
   End Class
 
Zuletzt bearbeitet:
Hi Suye,

Public Sub New wird erst aufgerufen nach dem die Variablen

Private FStream As New FileStream(strDateipfad, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)
Private SReader As New StreamReader(FStream)

initialisiert werden und zu diesem Zeitpunkt ist natürlich strDateipfad = Nothing,
deshalb auch der Fehler.

Jens

Hat sich leider mal wieder überschnitten :)
 
OK vielen Dank, es geht

ich glaube ich begreife auch meinen Fehler. Die Streamhandler waren nicht initialisiert stimmts ?

meinst du das .NET Forum oder gibt es noch speziell ein VB.NET Forum ?
 

Neue Beiträge

Zurück