Autor Beitrag
Kickerkalle
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 07.03.16 23:20 
Hallo,

leider habe ich bisher noch keine für mich ganz verständliche Antwort im Netz oder hier im Forum erhalten.
Wie schon bei meiner anderen Frage erwähnt, bin absoluter Anfänger in vb. Deswegen meine Frage.

Ich habe eine Klasse angelegt mit Datenverbindungen etc.

Dann definiere ich in einer neuen Windows Form unter Public class folgendes:
ausblenden Quelltext
1:
2:
Private class as New Klasse 1 (Name meiner Klasse) 
Private ds as New Dataset

Wenn ich alles richtig verstanden habe, muss ich die Klasse über New verbinden, richtig? Dies ist zwingend erforderlich.

Aber beim ds brauche ich das New doch gar nicht oder was ist der Unterschied beim ds zwischen New und nicht New in der Deklaration, wenn ich sowieso unter Public class deklariere?

Vielen Dank schon im voraus für eure Hilfe.

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 07.03.16 23:49 
ds ist der Name einer Variablen. Diese kann auf eine Instanz der Klasse DataSet verweisen. Muß es aber nicht. Es kann auch auf nix zeigen solange noch keine Instanz erzeugt hat.

Mit dem new bei der Deklaration sagst du also "Bitte liebes System erstelle mir eine Klassenvariable des Typs DataSet und erstelle mir auch eine Instanz der Klasse DataSet und lasse ds drauf zeigen". Ohne new wäre ds leer (im VB speak heißt das "nothing") und du müßtest später im Code erstmal eine Instanz von Dataset der Variablen zuweisen damit du über ds auf eine DataSet Instanz zugreifen kannst. Wenn du ohne new und ohne späterer Zuweisung einer DataSet Instanz über ds irgendwas machen wolltest würdest du eine Exception erhalten (eine NullReferenceException) weil du ins leere greifst da deine Variable auf nix zeigt.
Kickerkalle Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 08.03.16 00:25 
Vielen Dank für die rasche Antwort.
Sorry, aber ganz verstanden habe ich das noch nicht.

Wenn ich später im Code aber in Text- oder Comboboxen etwas anzeigen möchte und ich folgendes schreibe.
ausblenden Quelltext
1:
ds = class.table("Schuhe"),					

wobei ich in der Klasse festgelegt habe table = getSELECT("SELECT * FROM " & tableName) und Schuhe der Tabellenname ist, bräuchte ich für ds keine New Deklaration, weil ich mit dem Befehl eine Instanz dem Dataset und der Variable zuweise, richtig?

Vielen Dank für die Hilfe bei solchen Anfängerfragen.

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 08.03.16 00:31 
Zitat:
wobei ich in der Klasse festgelegt habe table = getSELECT("SELECT * FROM " & tableName) und Schuhe der Tabellenname ist, bräuchte ich für ds keine New Deklaration, weil ich mit dem Befehl eine Instanz dem Dataset und der Variable zuweise, richtig?


Richtig. Du weißt der Variablen eine andere Instanz zu. Was du in der Methode machst ist für diese Erkenntnis egal. Du schreibst ds = ivrgendwas also weißt du der Variablen was neues zu was vorher dran hing (oder auch) nicht ist weg. In deinem Code würde durch das new also eine Instanz erzeugt werden die du nachher gar nicht verwendest sondern durch was anderes ersetzt.
Kickerkalle Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 08.03.16 00:44 
Okay verstanden. Mit New verhindere ich eigentlich nur, dass die Variable nicht leer ist oder wie du schreibst nothing, wenn ich Ihr nichts zuweise. Da ich bisher immer nur alles in Combo-, textboxen oder Datagridview anzeige, ist dies für mich praktisch irrelevant.

Aber bei der Klasse ist das New immer erforderlich?
Wenn ich das New bei der Klasse weglasse und schreibe:
ausblenden Quelltext
1:
ds = class.table("Schuhe"),					

Weiß VB nicht das class auf die Klasse 1 verweisen soll oder? und es wurde eine Fehlermeldung kommen?

Danke für die Hilfe und deine guten Erklärungen, sowie deine Geduld mit mir

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 08.03.16 00:53 
Zitat:
Weiß VB nicht das class auf die Klasse 1 verweisen soll oder? und es wurde eine Fehlermeldung kommen?


ja wenn class nothing enthält weil du keine Instanz an class gehängt hast wird der versuchte Aufruf der table Methode knallen denn nichts hat keine table Methode nur eine Klasse1 Instanz hat die.
Kickerkalle Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 08.03.16 07:14 
Vielen Dank. Soweit alles kapiert denke ich.
Jumpy
Hält's aus hier
Beiträge: 23
Erhaltene Danke: 5



BeitragVerfasst: Di 08.03.16 10:49 
Vielleicht sollte man der Vollständigkeit halber erwähnen, dass wenn man das new bei der deklaration der Variablen wegläßt und man somit erstmal eine "leere" Variable hat, diese später im Code entweder durch Zuweisung einer bereits anderweitig existierenden Instanz füllen kann, wie ihr das in dem Beispielen mit ds gemacht habt, oder indem man eine neue Instanz erzeugt, wenn man sie braucht und das sähe dann glaub ich so aus:
ausblenden Quelltext
1:
class = new Klasse1					

oder
ausblenden Quelltext
1:
Set class = new Klasse1					

Ich weiß nie, braucht man in VB das Set oder ist das nur in VBA?

Moderiert von user profile iconTh69: Code-Tags hinzugefügt