VB.NET Objekte erstellen

yulian

Grünschnabel
Also irgendwie scheine ich noch ein Verständnissproblem mit Objekten zu haben.

Ich hab mir eine Klasse PC erstellt die auch div. Eigenschaften speichert.
t auch super. Ich Instanziere ein Objekt PC1 und speichere in den Eigenschaften ein paar Sachen. Wunderbar. Aber was mache ich wenn ich mehrere Objekte brauche, allerdings erst zur Laufzeit weiß wie viele?

Also ich mit meinem bescheidenen Wissen habe 2 Lösungsansätze:

Ich habe immer zwischen 1 und 100 PCs für die ich Daten verarbeiten möchte.
1. Entweder ich Instanziere 1 Objekt und benutzte das immer wieder für alle PCs ODER
2. ich erstelle für jeden PC ein eigenes Objekt.

2. würde mir besser gefallen aber ich weis nicht wie ich dynamisch Objekte erzeuge.

Oder hab ich nen Denkfehler?


MfG Yulian
 
Hi,

das kommt immer ganz auf den Zusammenhang an. Eine Möglichkeit wäre z.B. eine Kombination aus Schleife und Array oder Liste.

Grüße, D.
 
Mhm, Zusammenhang. Ich reiße es mal an.
Ich lese von 1 - 100 Rechnern die Seriennummer und die MAC aus einer Textdatei ein.
Das wird dann in eine Exceltabelle eingetragen.
Desweiteren wird mit den Daten eine weitere Textdatei erstellt.

Im Moment mache ich das mit VB6 und arbeite Zeile nach Zeile in einer Schleife ab.
Einfach 2 Variablen und immer den gerade zu bearbeitenden PC eingetragen.
Danach lese ich die Exceltabell wieder ein um meine neue Textdatei erstellen zu können.

Nun dachte ich mir (um VB.Net mit was sinnvollen zu lernen :suspekt:) mache ich das über Objekte. Also pro Rechner ein PC Objekt und rein die Daten. Dann die Exeltabelle gefüllt und aus dem Objekt raus auch gleich die Textdatei befüttert. Ich erstelle immer erst komplett die Exceltabelle und dann komplett die Textdatei. Sonst muss ich ja zig mal die Datei öffnen.

Es muss doch irgendwie möglich sein zwischen 1 und 100 Objekten zu erstellen, je nachdem wieviel PCs in der Original TXT drinnen sind. Nur wie weiß ich nicht :-/
 
Hallo Yulian,

hier ein kleines Beispiel (Class1 hat die Public Eigenschaft sBla as String):

Dim arrObjects() As Class1
Dim i As Long
Dim oObject As Class1
Dim anzahl As Long

anzahl = 10

' Setzen der Objekte
For i = 0 To anzahl
oObject = New Class1
oObject.sBla = CStr(i)

ReDim Preserve arrObjects(i)

arrObjects(i) = oObject
Next

' Ausgeben
For i = 0 To anzahl
MsgBox(arrObjects(i).sBla)
Next

So long,

wos
 
Du könntest so vorgehen:

Textdatei mit den PC's öffnen vie FileStream. Dann erstellst du dir damit einen StreamReader (sr) und machst damit ein while(sr.Peek() > 0)
In der Schleife weist du dann irgendeiner string variablen mir sr.ReadLine() die aktuelle Zeile zu und erstellst dir daraus dein PC-Objekt - oder alle die du dann später durchiterierst mit nem foreach was allerdings deinen Arbeitsspeicher volllaufen lassen könnte.
Um die Textdatei zu erstellen und zu füllen machst du dir einen StreamWriter auf - damit hast du nur EINEN Zugriff auf die Textdatei da du ihn quasi mit dem StreamReader öffnest - und schreibst da rein. Du machst also im Prinzip das:

- Textdatei auf (FileStream)
- StreamReader erstellen anhand des FileStreams
- StreamWriter erstellen
- Jede Zeile aus dem StreamReader auslesen
-> PC Objekt erstellen
-> Mit dem StreamWriter in die neue Textdatei schreiben
-> In die Excel-Datei schreiben
- End While
- StreamWriter schließen
- StreamReader schließen

Voila!
 
BINGO, sowas hab ich gesucht :)

Vielen Dank und schönes Wochenende.

LG Yulian

Hallo Yulian,

hier ein kleines Beispiel (Class1 hat die Public Eigenschaft sBla as String):

Dim arrObjects() As Class1
Dim i As Long
Dim oObject As Class1
Dim anzahl As Long

anzahl = 10

' Setzen der Objekte
For i = 0 To anzahl
oObject = New Class1
oObject.sBla = CStr(i)

ReDim Preserve arrObjects(i)

arrObjects(i) = oObject
Next

' Ausgeben
For i = 0 To anzahl
MsgBox(arrObjects(i).sBla)
Next

So long,

wos
 

Neue Beiträge

Zurück