Von VBasic 6 auf VBasic 2005 umsteigen ?

Hallo an alle,

Ich habe da so ein Problem mit dem Index eines Steuerelementes.

Beispiel:

Ich habe mehrere Text-Boxen

Text1(0), Text1(1), …

und ein

Array werte()

die ich mit einer

For a=0 to …
Text1(a).text = werte(a)
Next a

ausfülle.
Das ist in VB 6 kein Problem

Nur wie kann ich das selbe in VB.net realiesieren?

weiter habe ich in VB 6 in einer Module1.bas Datei mit

Global Liste as string

meine Variablen als Global definiert. Unter VB 2005 habe ich das einfach nicht gefunden.

Würde mich über eine Anschubinformation sehr freuen.

Mit freundlichen Grüßen

Stefan Behrendt

Hallo Stefan :smile:

Ich habe da so ein Problem mit dem Index eines
Steuerelementes.

Beispiel:

Ich habe mehrere Text-Boxen

Text1(0), Text1(1), …

und ein

Array werte()

die ich mit einer

For a=0 to …
Text1(a).text = werte(a)
Next a

ausfülle.
Das ist in VB 6 kein Problem

Nur wie kann ich das selbe in VB.net realiesieren?

Steuerelemente in VB2005 nimmt man nicht mehr und brauch man auch nicht. Wozu auch?
Was hast du denn genau vor?

weiter habe ich in VB 6 in einer Module1.bas Datei mit

Global Liste as string

meine Variablen als Global definiert. Unter VB 2005 habe ich
das einfach nicht gefunden.

Lege die Variable in einer Klasse ab ( Entweder als Public Shared oder nur Public) , somit kannst du jederzeit darauf zugreifen :smile:
Alternativ kannst du auch dein Vorhaben, nach wievor nachgehen.
Global entspricht Public. Lege dazu einfach ein neues Modul an und dann folgenden Source

Module Module1

 Public DeineVariable As DeinTyp

End Module

Würde mich über eine Anschubinformation sehr freuen.

Mit freundlichen Grüßen

Stefan Behrendt

MfG Alex

Erst mal danke für die Info !

und zu deiner Frage:

Was hast du denn genau vor?

Ich transformiere eind CSV Datei (Onlinebanking) und
zerlege diese mit Split in die einzelnen Segmente

Die zerlegten Daten werden mit dem Inhalt einer Datenbank verglichen und gegebenenfalls Ausgetauscht um danach als QIF Datei für MSMonay als Import zur verfügung zu stehen.
Bei der Anzeige neuer Buchungen (die meisten sind monatlich wiederkehrend) habe ich in der VB6 version volgendes gemacht

CSV Datei in variable eingabe einlesen

buchungen=split(eingabe,vblfcr)

for a=1 to UBound(buchungen) - 1
wert=split(buchungen,";")
'Daten vergleichen wenn Unbekannt anzeige für Benutzer zum editieren
For b= 0 to 12
Text1(b).text = wert(b)
Text1(b).tag = wert(b) 'Original hinterlegen
next b
next a

Ich hoffe das die Info reicht

Cu Stefan

Hallo Stefan,

Erst mal danke für die Info !

Nichts zu danken :smile:

und zu deiner Frage:

Was hast du denn genau vor?

Ich transformiere eind CSV Datei (Onlinebanking) und
zerlege diese mit Split in die einzelnen Segmente

Die zerlegten Daten werden mit dem Inhalt einer Datenbank
verglichen und gegebenenfalls Ausgetauscht um danach als QIF
Datei für MSMonay als Import zur verfügung zu stehen.
Bei der Anzeige neuer Buchungen (die meisten sind monatlich
wiederkehrend) habe ich in der VB6 version volgendes gemacht

CSV Datei in variable eingabe einlesen

Ok, soweit habe ich das verstanden :smile:

buchungen=split(eingabe,vblfcr)

for a=1 to UBound(buchungen) - 1
wert=split(buchungen,";")
'Daten vergleichen wenn Unbekannt anzeige für Benutzer zum
editieren
For b= 0 to 12
Text1(b).text = wert(b)
Text1(b).tag = wert(b) 'Original hinterlegen
next b
next a

Hier faellt mir auf das die Schleife erst bei 1 beginnt zu zaehlen. Das niedrigste Feld im Array hat aber die 0! Also fehlt dir hier mind. 1 Datensatz!

Aber die Routine, wie sie hier unter VB6 lauffaehig ist, läuft unter .NET nicht :s
Wie gesagt Steuerelement Array gibt es in .NET nicht mehr. Das kann man anders machen :smile: Da du dein Project ja sicher neu erstellst, so sollte dies nicht das Problem sein :smile:

Noch einmal fix zu den Steuerelement Array’s.
Unter VB6 gibt es diese Streng angenommen auch nicht. Du hast zwar Indexe ueber die du auf sie zugreifen kannst, aber intern werden sie auch nur in einem Array verwaltet!
Genau dies, kann man sich unter . NET zu nutze machen :smile:
Du erstellst zur Laufzeit die Buttons, weisst ihnen eine EreignisRoutine zu. Erstellst zur gleichen Zeit ein Array wo du die Schaltflächen reinladen tust. Nun kannst du ueber das Array. Nennen wir es mal Button, zum bsp. Mit Button(3).Eigenschaft darauf zugreifen :smile:

Es ist vlt. nicht die beste Lösung, aber sie würde functionieren :wink:
Ich selbst bin seit geraumer Zeit dabei mir .NET beizubringen, von daher kann ich dir sicherlich keine optimale Lösung praesentieren, aber jedoch eine funktionierende!

Welche Frage sich aber mir noch stellt ist. Du speicherst die alten Werte in der Tag Eigenschaft und weisst der Textbox den neuen Wert zu.
Warum lagerst du sie nicht in einer Klasse aus? In dieser Klasse kannst du gleich eine Routine implementieren, was die Daten vergleicht etc. :smile:

Willst du wirklich weiterhin ueber die TAG Eigenschaft arbeiten?
Ich kann dir mal morgen Abend, wo ich mal Zeit habe, ein Demo fix basteln, was dies erledigt, so erkennst du die Vorgehensweise und kannst diese dann evtl. nutzen oder deinen Beduerfnissen anpassen :smile:

Ich hoffe das die Info reicht

Naja so halbwegs :wink:

MfG Alex

Hallo Stefan.

Ich weiß nicht genau, ob Dir das hier weiterhilft, aber mal sehen. Ich habe in Visual Studio 2003 die Möglichkeit, der Werkzeugsammlung folgendes Element hinuzufügen:

TextBoxArray

In der Hilfe dazu steht geschrieben:

Emuliert ein Visual Basic 6.0-Steuerelementarray von TextBox-Steuerelementen.

Eventuell geht das ja dann auch in VB2005. Allerdings kann ich Dir absolut nichts über die Verwendung erzählen.

Mir ist auch bekannt, das es möglich ist, ein Steuerelemente-Feld in .NET zu erstellen. Es brauchte sogar „nur“ irgendwo ein Text im Codefenster verändert werden, aber ich weiß, zur Hölle, nicht mehr wo, geschweige denn wie.

Frag’ doch einfach mal im .NET-Brett

Viele Grüße
Carsten

Hallo Stefan,

wie versprochen hier ein Lösungsweg, wie du Steuerelemente in .NET realisieren kannst :smile:

Option Strict On
Option Explicit On


Public Class Form1

 Private Textboxen(11) As TextBox 'Deine 12 Textboxen (0-11)

 Private Sub Form1\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 Dim T As TextBox 'TextBox
 For I As Byte = 0 To 11
 T = New TextBox
 With T
 .Location = New Point(100, 10 + (I \* 22))'Position 
 .Name = "Textbox" & CStr(I)'Name
 .Text = "" 'Inhalt
 .Visible = True 'Sichtbar ?
 Me.Controls.Add(T) 'Erstellen der TextBox
 AddHandler T.TextChanged, AddressOf TextChange 'Eventhandler erstellen
 Textboxen(I) = T 'Textbox dem Array zuweisen!
 End With
 Next
 End Sub

 Private Sub TextChange(ByVal sender As System.Object, ByVal e As System.EventArgs)
 Dim T As TextBox
 T = DirectCast(sender, TextBox)'Umwandeln von Object nach Textbpx
 MsgBox(T.Name) 'Wir lassen uns mal den Namen anzeigen :smile:
 End Sub
End Class


    
    
    Noch mal kurz dazu was der Source macht. Also beim laden der Form, werden 12 Textboxen dynamisch erstellt und dem Array Textboxen zugewiesen. Gleichzeit erstellen wir noch einen Handler, der auf das Change Ereignis der Textbox reagiert :smile:
    Da wir dort aber nur die Textbox bekommen, die als Object fungiert, muessen wir sie noch umwandeln (casten), was mit DirectCast passiert :smile:
    Willst du nun direkt auf die textboxen zugreifen, so kannst du das ganz einfach über das Array machen.
    
    
    
        
        Textboxen(DeinIndex).DeineEigenschaftoderMethode
    
    
    
    
    Wie du siehst ist diese Vorgehensweise etwas umstaendlich! Da man wie bereits erwaehnt, unter .NET auf Steuerelemente verzichtet :wink:
    
    Es führen viele Wege nach Rom, welchen du nimmst ist Dir ueberlassen :smile:
    
    MfG Alex

Hallo !

Also um erstmal grundlegende Fragen zu beantworten:
Ich habe mir unter VB6 so einige Sachen erwurschtelt (über Gewinn und Verlust) ein Programmierer würde „die Hoffnung ins Korn werfen“ ;0) und nach dem Prinzip auch mein Weg führt nach Rom ich benötige nur mehr Zeit. Nun habe ich vor 3 Jahren eine Studio.net beta Version von MS-Direkt bekommen und mich nach 3 Tagen dagegen entschieden. Mit dem kauf meines neuen Rechners habe ich mir gleichzeitig VB.net zugelegt und nun wollte ich natürlich mit meinem „Wissen“ loslegen und nix ist mer so wie es war und wer nicht weiss nach was er sucht ist mit der Hilfe aufgeschmissen. Also noch mal von vorne beginnen mit lerne.

Hier faellt mir auf das die Schleife erst bei 1 beginnt zu
zaehlen. Das niedrigste Feld im Array hat aber die 0! Also
fehlt dir hier mind. 1 Datensatz!

Ja mit der 1 ist bei einer CSV Datei notwendig da im Array(0) nur die Tabellenüberschriften/-namen stehen. Und die brauche ich ja nur für die Bezeichnung der Textfelder.

Das Beispiel was du mir geschrieben hat ist ja doch aufwendiger als ich zu beginn angenommen habe. würde mich freuen wenn du mir die verwendung von Klassen und die zusammenfassung von Steuerelementen im Array kurz erklären könntest oder gute verstäntliche web-links hättest die Stepp by Stepp einem Dummi und VB6 geschädigten net fit machen.

Cu Stefan

PS: „kompletten Quelcode ist zwar nett aber wenn ich begreife wie es geht brauche ich beim nächsten Projekt nich wieder nachzufragen“

Hallo,

Also um erstmal grundlegende Fragen zu beantworten:
Ich habe mir unter VB6 so einige Sachen erwurschtelt (über
Gewinn und Verlust) ein Programmierer würde „die Hoffnung ins
Korn werfen“ ;0) und nach dem Prinzip auch mein Weg führt nach
Rom ich benötige nur mehr Zeit. Nun habe ich vor 3 Jahren eine
Studio.net beta Version von MS-Direkt bekommen und mich nach 3
Tagen dagegen entschieden. Mit dem kauf meines neuen Rechners
habe ich mir gleichzeitig VB.net zugelegt und nun wollte ich
natürlich mit meinem „Wissen“ loslegen und nix ist mer so wie
es war und wer nicht weiss nach was er sucht ist mit der Hilfe
aufgeschmissen. Also noch mal von vorne beginnen mit lerne.

Das ist mir klar. .NET hat mit VB6 kaum noch etwas gemeinsam. Teilweise haben sie zwar den Syntax übernommen, aber den Nutzt man nur noch selten :wink:

Ja mit der 1 ist bei einer CSV Datei notwendig da im Array(0)
nur die Tabellenüberschriften/-namen stehen. Und die brauche
ich ja nur für die Bezeichnung der Textfelder.

Ok, also brauchst du sie doch *zwinker* Aber zur Auswertung ist dies unrelevant :smile:

Das Beispiel was du mir geschrieben hat ist ja doch
aufwendiger als ich zu beginn angenommen habe. würde mich
freuen wenn du mir die verwendung von Klassen und die
zusammenfassung von Steuerelementen im Array kurz erklären
könntest oder gute verstäntliche web-links hättest die Stepp
by Stepp einem Dummi und VB6 geschädigten net fit machen.

Puh so einfach ist das nicht :confused: Es ist dermassen Komplex und wie gesagt ich bin auch dabei mir das gerade beizubringen und habe sicher net den elegantesten Weg parat. Aber dein Vorhaben sollte leicht realisierbar sein, ohne grösseren Aufwand :smile:

Ich kann dir gerne mal ein Grundgeruest nennen wie man es machen koennte, nur muesste ich dazu wissen! Brauchst du alle 12 TextFelder? Willst du sie manuell anordnen oder per source ? Brauchst du Ereignisse dieser Textboxen? Wenn ja, dann welche?

Nehmen wir einmal du hast das File. In dem stehen 20 Datensaetze drinnen. Soll dann der erste eingetragen werden und gewartet werden bis auf weiter geklickt wird? oder alle erst einmal in einer Klasse speichern und dann bei Bedarf anzeigen und bearbeiten ?

Sollen alle eingelesen werden und dann nach und nach jeder Datensatz angezeigt werden?

Welches Format haben die Daten?

Aber zu deinen Problemen. Die Handhabung von Klassen ist eigentlich genauso wie unter VB6, nur das noch etliches mehr anstellen kannst :smile:

Zu Deinem Vorhaben. Ich würde eine Klasse „Items“ erstellen, die alle Member hat, die in dem File vorhanden sind! Dazu noch eine Eigenschaft die dir sagt ob die Daten geaendert worden! Dazu noch eine Function die die Daten vergleicht und eine die dir die Daten zurueckliefert.

Dann erstelle eine Klasse die die Daten speichert! Die kannst du dort dynamisch in ein Array ablegen *zwinker* Das Array würde ich Dynamisch vergrössern, also neues Array erstellen was vergrössert ist. Das Alte Array dort reinkopieren. Du verbiegst nur die zeiger auf die Daten und sollte sehr schnell gehen :smile:

So dann brauchst du noch eine Klasse die die alten Daten entgegen nimmt und eine die die neuen Daten aufnimmt. Macht 2 Klassen, die du aber ableiten kannst, von Items. Sprich mit Inherit einbinden :wink:

Was die Sache mit den Textfeldern angeht.

Erstelle sie einfach, weise der TAG Eigenschaft eine ID zu damit du es identifizieren kannst, und wenn du nun Daten brauchst, so holst du sie aus der Klasse und weisst sie anhand der ID dem entsprechenden Textfeld zu :smile:
Wie du siehst werden keine Steuerelement Array’s benötigt!

Hört sich alles ein wenig kompliziert an, ist es aber eigentlich nicht :smile:

PS: „kompletten Quelcode ist zwar nett aber wenn ich begreife
wie es geht brauche ich beim nächsten Projekt nich wieder
nachzufragen“

Was hast du denn daran nicht verstanden?

MfG Alex

Hallo, Alex

Was hast du denn daran nicht verstanden?

den Quellcode verstehe ich schon nur sind einige Sachen doch umständlicher als ich mir die zu Beginn vorgestellt habe.

Jedoch gefällt mir die erwähnte Klassen-Programmierung (habe jedoch noch keine Klassen in VB6 verwendet) ich werde mich also ersteinmal mit dem Thema: „Verwenden von Klassen“ auseinandersetzen.
Währe aber dankbar über weitere Tipps.

Cu Stefan

PS: „sollte ich fragen habe darf ich dich dann auch über E-Mail Kontakten ?“

Hallo Stefan,

den Quellcode verstehe ich schon nur sind einige Sachen doch
umständlicher als ich mir die zu Beginn vorgestellt habe.

Naja was heisst umstaendlich? Eigentlich ist das simple und net viel Source :wink: Sicher wirst du auch noch auf die eine oder andere Hürde stossen :confused: wo du sagst, mensch das kann doch net so schwer sein, oder soviel Source.
Wenn wir allein, mal die Klasse nehmen! Sie soll ja 12 Member enthalten, die du aendern möchtest. Das heisst du musst für jeden Member eine Eigenschaft implementieren. Da kommt schnell viel Source zusammen. Aber dank der Intelsi Box ( oder wie sich die schimpft) ist das schnell gemacht :wink:
Du wirst auch sehen, das du wenn du mit Klassen arbeitest, sehr viel flexibler bist, als ein Array anzulegen und dort die Daten zu speichern :wink:

Jedoch gefällt mir die erwähnte Klassen-Programmierung (habe
jedoch noch keine Klassen in VB6 verwendet) ich werde mich
also ersteinmal mit dem Thema: „Verwenden von Klassen“
auseinandersetzen.

Naja da hast du dir etwas vorgenommen :wink: Unter .NET kannst du soviel damit anstellen. Aber für dein Vorhaben, sollte eine Stink normale Klasse ohne schnick schnack ausreichen :smile: Sprich du brauchst keine Vererbung etc :smile:

Du kannst sie wiefolgt aufbauen

Option Strict On
Option Explicit On

Public Enum Data
 eMember1
 eMember2
 eMember3
 eMember4
 eMember5
 eMember6
 eMember7
 eMember8
 eMember9
 eMember10
 eMember11
 eMember12
End Enum

Public Class Item(Of DatenTyp) 'DatenSpeicher mit flexiblen Datentyp!

 Private myMember1 As DatenTyp
 Private myMember2 As DatenTyp
 Private myMember3 As DatenTyp
 Private myMember4 As DatenTyp
 Private myMember5 As DatenTyp
 Private myMember6 As DatenTyp
 Private myMember7 As DatenTyp
 Private myMember8 As DatenTyp
 Private myMember9 As DatenTyp
 Private myMember10 As DatenTyp
 Private myMember11 As DatenTyp
 Private myMember12 As DatenTyp

 Sub New(ByVal vRet() As DatenTyp)
 myMember1 = vRet(Data.eMember1)
 myMember2 = vRet(Data.eMember2)
 myMember3 = vRet(Data.eMember3)
 myMember4 = vRet(Data.eMember4)
 myMember5 = vRet(Data.eMember5)
 myMember6 = vRet(Data.eMember6)
 myMember7 = vRet(Data.eMember7)
 myMember8 = vRet(Data.eMember8)
 myMember9 = vRet(Data.eMember9)
 myMember10 = vRet(Data.eMember10)
 myMember11 = vRet(Data.eMember11)
 myMember12 = vRet(Data.eMember12)
 End Sub

 Public Property Member1() As DatenTyp
 Get
 Return myMember1
 End Get
 Set(ByVal value As DatenTyp)
 myMember1 = value
 End Set
 End Property

 Public Property Member2() As DatenTyp
 Get
 Return myMember2
 End Get
 Set(ByVal value As DatenTyp)
 myMember2 = value
 End Set
 End Property

 Public Property Member3() As DatenTyp
 Get
 Return myMember3
 End Get
 Set(ByVal value As DatenTyp)
 myMember3 = value
 End Set
 End Property

 Public Property Member4() As DatenTyp
 Get
 Return myMember4
 End Get
 Set(ByVal value As DatenTyp)
 myMember4 = value
 End Set
 End Property

 Public Property Member5() As DatenTyp
 Get
 Return myMember5
 End Get
 Set(ByVal value As DatenTyp)
 myMember5 = value
 End Set
 End Property

 Public Property Member6() As DatenTyp
 Get
 Return myMember6
 End Get
 Set(ByVal value As DatenTyp)
 myMember6 = value
 End Set
 End Property

 Public Property Member7() As DatenTyp
 Get
 Return myMember7
 End Get
 Set(ByVal value As DatenTyp)
 myMember7 = value
 End Set
 End Property

 Public Property Member8() As DatenTyp
 Get
 Return myMember8
 End Get
 Set(ByVal value As DatenTyp)
 myMember8 = value
 End Set
 End Property

 Public Property Member9() As DatenTyp
 Get
 Return myMember9
 End Get
 Set(ByVal value As DatenTyp)
 myMember9 = value
 End Set
 End Property

 Public Property Member10() As DatenTyp
 Get
 Return myMember10
 End Get
 Set(ByVal value As DatenTyp)
 myMember10 = value
 End Set
 End Property

 Public Property Member11() As DatenTyp
 Get
 Return myMember11
 End Get
 Set(ByVal value As DatenTyp)
 myMember11 = value
 End Set
 End Property

 Public Property Member12() As DatenTyp
 Get
 Return myMember12
 End Get
 Set(ByVal value As DatenTyp)
 myMember12 = value
 End Set
 End Property

 Public Sub SetData(ByVal vret As DatenTyp)
 myMember1 = vret
 End Sub
End Class

Wie du siehst kommt ne Menge Source zusammen :s
Aber auch wie du erkennen kannst, wiederholt sich eigentlich der Source nur :wink:

Kommen wir nun noch einmal schnell zur Flexibilitaet.
Ein ganz grosser Vorteil ist, das diese Klasse jeden beliebigen Datentyp ( String, Double, Date etc.) speichern kann!

Irgendwann kommst du später einmal auf die Idee. Hmm, eigentlich brauche ich eine Function die für jeden Datensatz ausgeführt werden soll. Oder du sagst, naja eigentlich koennte ich noch andere Daten speichern etc. So kannst du die Klasse fix umbauen und sie tut das was sie soll. An dieser Stelle würde VErerbung ins Spiel kommen :wink:

Hast du die Daten in einem Array, so kommst du an dieser Stelle schon ins schleudern und schreibst dir die Finger wund (je nachdem was du machen möchtest! Mit einer Klasse ist das kein Thema.
Du implementierst einfach nur die Sub oder Property oder Function , Schnittstelle eine andere Klasse etc. und das wars auch schon :smile:

Wenn du nun die Klasse zum Bsp erstellst

Dim locData() As String = {"A", "B", "C", "D", "E", "F", "G", "H", I", "J", "K", "L"}
Dim locData1() As String = {"M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X"}
Dim b As New List(Of Item(Of String)) ' Wir verwenden den Datentyp String!
b.Add(New Item(Of String)(locData))
b.Add(New Item(Of String)(locData1))

Ich weiss , ist net sehr einfallsreich :s

locdata und locData1 stellen einfach nur die Daten bereit :smile:
Mit b.add fügst du daten der Collection hinzu!
Da die Collection aber vom Typ Item (was die Klasse ist) ist, so musst du ihr einfach eine neue Instanz der Klasse übergeben :smile:
Das machst du mit New Item(of String)(DieDaten) :smile:

Vielleicht wunderst du dich nun, warum hier auf einmal (Of String) auftauchst! Ich hatte dir ja geschrieben das die Klasse arg Flexible ist, auch vom Datentyp her!
New Item ( Of String) (DeineDaten) bedeutet in dem Falle!

New Item = Es wird eine neue Instanz von der Klasse Item erstellt!
(Of String) = Die Klasse kann Strings speichern, willst du Double
speichern, so schreibe einfach (of Double)
(DeineDaten) = hier uebergibst du die Daten! In dem Demo, werden sie als Array erwartet :wink:

In B werden nun fleissig alle Daten eingetragen!
B stellt nun auch tolle Function zur verfügung, die du bei einem Array net finden wirst :smile: Du koenntest nun eine Schleife bauen und wenn du nun genau für den Datensatz die gewisse Function brauchst, so kannst du sie dann ueber b.DeineFunction aufrufen :wink: ( sie muss natürlich in der Klasse implementiert sein!

Auch kannst du nun die Daten direkt manipulieren!
Willst du zum Bsp. den 4 Member vom 3 Datensatz aendern, so kannst du das einfach über B(3).Member4 = „DeineDaten“ machen :smile:

in unseren kleinen Demo, zum Bsp. würden wir das so machen! Wir implementieren einfach mal eine Function die uns Member1 und Member 2 zusammen zurueckliefert! In dem Falle w+rden wir einfach folgendes schreiben :smile:

'in der Klasse

Public Function GetData as String
 return myMember1 & myMember2
End Function

Nun brauchen wir die Daten vom 4 Datensatz. Ein Aufruf via B(3).GetData liefert uns die gewuenschten Daten :wink:

Achso, was mir nun gerade einfaellt :wink: Du koenntest und solltest zum Bsp. eine Function einbauen, die die Daten vor dem eintragen prüft! Auch waere eine Function nicht schlecht, die dir die Daten in die Textfelder eintraegt oder die dir zurueckgibt welche Daten geaendert worden sind! Und zum Schluss auch noch eine, die dir die Daten aufbereitet zurueckliefert, so das du sie ins File schreiben kannst :wink:

Dir ist sicher aufgefallen das die Klasse eine Sub New besitzt. Das ist der Konstrucktor und wird aufgerufen, wenn die Klasse neu Instanziert wird! Die Sub kannst du zum Bsp. nutzen um deine Daten zu prüfen und ggfls. zu aendern!
Du solltest nur daran denken , das du flexible Datentypen entgegennehmen kannst! Bleiben wir mal bei den Strings :smile:

Ein String ist ein OBJECT unter VB und kann unter anderem Nothing sein :confused: Das solltest du prüfen. Hierzu bietet sich die Kurzschluss Auswertung an. Sprich

 if DeineVariabe ist nothing orelse DeineVariable ="" then ....

Währe aber dankbar über weitere Tipps.

Nunja, was magst denn noch wissen ? Ein paar Tipps hast du ja schon :wink:

Cu Stefan

PS: „sollte ich fragen habe darf ich dich dann auch über
E-Mail Kontakten ?“

Jups, das kannst du machen :smile: Aber wenn dann bitte an [email protected] :smile:

MfG Alex

PS: Kann sein, das das alles ein wenig durcheinander ist :s Ich hoffe du verstehst trotzdem was ich meinte. Wenn nicht, einfach nachfragen :smile:

Hi Alex

sorry aber lag die letzten Tage Im Krankenhaus Lungenentzündung.

Erst mal danke für deine lane Information.

cu Stefan