Umsteigertutorial gesucht (von VB 6.0 auf VB.NET)

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von ThomasG82.

    Umsteigertutorial gesucht (von VB 6.0 auf VB.NET)

    Ja, ich programmiere bis zum heutigen Tag tatsächlich noch in VB 6.0, was auch nach wie vor ausreichend ist (für kleine, nur selbst verwendete Programme und vorhandene, deren Migration zu aufwendig ist). Für ein ganz neues und evtl. etwas umfangreicheres Projekt möchte ich nun aber auf .NET wechseln. Aber auf jeden Fall VB, kein C# oder C++.

    Es handelt sich zwar nicht um mein erstes .NET-Programm (ich habe bereits einen Bildschirmschoner mit VB.NET programmiert), aber trotzdem bin ich Neuling.

    Nun bin ich aktuell auf der Suche nach einem Tutorial, welches einem erfahrenen VB-6.0-Entwickler die neuen .NET-Features und die Unterschiede erklärt.

    Ich habe zwar ein paar gefunden, aber die sind von 2002/2003, also vom Beginn des .NET-Zeitalters, und ich vermute, nach sovielen Jahren wird sich deutlich was getan haben. Oder würde das ausreichen?

    Ich suche explizit kein Programmier- oder VB-Anfängertutorial. Ich programmiere seit 1998 und seit 2000 mit VB 6.0. Es geht explizit um den Umstieg von 6.0 auf .NET.

    Es sollte etwas kostenloses sein, kein Buch zum Kaufen.

    Danke für eure Tipps!
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hallo Marcus

    Ich bin damals auch "umgestiegen". Ich muss sagen das mir der Umstieg komischerweise leicht von der Hand ging. Ich habe damals einfach direkt ein Projekt gestartet und dieses umgesetzt.
    Da die Syntax die selbe ist und die IDE heute sooo gut ist würde ich es wirklich lerning by Doing machen.

    Was ich mir eher ansehen würde: Die IDE. Umgang mit Intellisens und die Funktionen der "Glühbirne" in Visual Studio. Diese Hilft dir so extrem viel beim umstieg.
    Dann noch einfach etwas was mir damals half.... denke Objektorientiert.

    Und sonst gibts da ein tolles Forum, hab gerade den Link nicht zur Hand, dort Helfen aber wirklich einige sehr schnell und kompetent. ;)

    Grüße und einen guten Rutsch (auch zu .Net)
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Danke euch beiden, das hilft mir auf jeden Fall schon mal weiter. Ich werde mich dann mal mit den beiden Threads und der IDE auseinandersetzen.

    Falls jemand noch was hat, bin ich aber bereit für weiteren Input. ;)
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Marcus Gräfe schrieb:

    Es sollte etwas kostenloses sein, kein Buch zum Kaufen.

    Ich empfehle immer Kühnel/Leibhard - Online-Buch.
    Oder Löffelmann von 2005 - sollte sich inne vbParadise-Buchtipps finden.

    Ich halte derlei Umsteigereien ja für überhaupt nicht einfach.
    Weil wenn man von vb6 kommt muss man sich von einfach allem trennen, was man gekannt hat.
    Ob man nu eine Datei öffnet, ein Datum addiert, im String eine Position sucht, eine Linie zeichnet, Registry ausliest, eine Schleife codet, ein Array initialisiert, mit mehreren Controls arbeitet ... - einfach alles geht ganz anners.
    Imo ist solch von Pike auf neu lernen.

    ErfinderDesRades schrieb:

    Imo ist solch von Pike auf neu lernen.

    Da scheinst du recht zu haben. Wenn man auf die ganzen alten Sachen verzichtet und komplett .NET-konform sein und ordentlich programmieren möchte, weiß man plötzlich gar nichts mehr. Was bleibt sind die grundlegensten Sprachkonstrukte wie if, for usw. (wobei es da auch Neuerungen gibt).
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich hätte direkt mal drei Anfänger-Fragen, zu denen sich jetzt vmtl. kein eigener Thread lohnt:

    1.) In der Powerpoint-Präsentation von microsoft.com/de-de/download/details.aspx?id=32252 (es geht um die Migration von VB6-Projekten nach .NET) wird geschrieben, dass Arrays nun neuerdings bei 0 und nicht mehr bei 1 beginnen. Allerdings beginnen auch in VB 6.0 Arrays bei 0 (Dim x(1) As Integer bedeutet von 0 bis 1). Was ist damit gemeint? Oder geht's vielleicht nur darum, dass es Option Base nicht mehr gibt (was ich nie verwendet habe)?

    2.) Verstehe ich das richtig, dass ich dynamische Arrays nun mit Dim x As List(Of Integer) machen soll und nicht mehr mit Dim x() As Integer (und ReDim) und statische wie immer (Dim x(1 To 10) As Integer)?

    3.) Ich habe mir die zahlreichen "Warnungen" vor My zu Herzen genommen und möchte darauf verzichten. Dann scheitert es aber schon an so simplen Dingen wie das Ausgeben des Anwendungsnamens. Eigentlich geht das simpel mit My.Application.Info.Title. Wenn ich drauf verzichte muss ich wohl sowas machen:

    VB.NET-Quellcode

    1. Dim x As New Microsoft.VisualBasic.ApplicationServices.AssemblyInfo()
    2. MessageBox.Show(x.Title)

    Da scheitert es dann daran, dass der Konstruktor als Parameter currentAssembly As Assembly haben möchte und ich keinen Schimmer habe, wo ich das herbekomme. Oder würdet ihr in dem Fall doch lieber die Kurzvariante mit My benutzen?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    1. ja, m.E. geht es nur darum. Früher gab es bei dem ein oder anderen Sammlungstyp als Erstindex die 1, jetzt ist alles 0-basiert.
    2. Du könntest immer noch mit Dim x As Integer() und ReDim arbeiten, aber generische Sammlungstypen wie die von Dir angesprochene List(Of T) ist deutlich flexibler. Und vor allem auch mehr im Umlauf. Bei ReDim wird doch auch immer kräftig hin- und herverschoben, da ja ein Array m.E. nicht erweiterbar ist, wenn ich mich richtig erinnere. Das fällt bei den modernen Sammlungstypen weg.
    3. reicht Dir ggf. schon Application.ProductName? Unter Application und Environment gibt's nette Sachen zu finden. Frag die IDE. Einfach Application. eingeben und IntelliSense ploppt genügend Möglichkeiten auf.
    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 für die Antworten.

    VaporiZed schrieb:

    Früher gab es bei dem ein oder anderen Sammlungstyp als Erstindex die 1

    Bei Strings war es früher ab 1. Ist das nun auch alles bei 0? Z. B. Positionen innerhalb von Strings.

    VaporiZed schrieb:

    reicht Dir ggf. schon Application.ProductName?

    Leider nein. In meinem Fall habe ich zwei Anwendungen, die zum selben Produkt gehören, also dort jeweils dasselbe drin stehen haben. Der Titel ist aber jeweils anders, weil das eine das Hauptprogramm und das andere die Konfiguration ist. Deswegen brauche ich zwingend Title.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Bzgl. Strings: ja, Mid hat ja früher (wie heute :( ) bei 1 angefangen, SubString heute bei 0. Mid gibt es leider immer noch. Daher Vorsicht.
    Titel: Geht wohl ziemlich einfach und naheliegend (haha) über:

    VB.NET-Quellcode

    1. Dim Title = DirectCast(Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(GetType(Reflection.AssemblyTitleAttribute), False)(0), Reflection.AssemblyTitleAttribute).Title
    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.
    Das Reflection.Assembly.GetExecutingAssembly() hat mir wohl gefehlt. Ich mach's dann jetzt so (für mich sieht's logischer aus und ganz ohne My):

    VB.NET-Quellcode

    1. Dim x As New Microsoft.VisualBasic.ApplicationServices.AssemblyInfo(Reflection.Assembly.GetExecutingAssembly())
    2. MessageBox.Show(x.Title)

    Danke!
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    @Marcus Gräfe
    Den VisualBasic Namespace zu verwenden ist nicht so dolle. Ich würde auf die Methode von @VaporiZed zurückgreifen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nofear23m schrieb:

    Den VisualBasic Namespace zu verwenden ist nicht so dolle

    Ach, da war ja was... Tatsächlich wollte ich den meiden, war mir in dem Fall jetzt gar nicht aufgefallen. Dann also doch die komplexe Zeile. Danke!

    EDIT: Hier steht übrigens komischerweise, dass es kein Problem ist, den Namespace zu verwenden: techrepublic.com/article/achie…t-development-with-vbnet/
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

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

    Ich persönlich benutze auch die Methode des Namespace. Warum ist das eigentlich nicht gut?
    Ich benutze es auch nur um der Form/allen Formen den Namen des Programms zuzuweisen. Gab bisher auch nie Probleme.

    Marcus Gräfe schrieb:

    Hier steht übrigens komischerweise, dass es kein Problem ist, den Namespace zu verwenden
    Mag ja sein, dass der Artikel von 2002 recht hat und die Funktionalitäten darin nicht nur als Kompatibilitätskrücke gedacht ist, sondern tw. auch sehr performant sind. Aber: Er verleitet eben dazu, nicht VB.Net-mäßig denken zu müssen. Viele Sachen, die ich bisher darin gesehen und früher auch genutzt habe, sind in VB6-Manier. Es gibt .Net-Alternativfunktionen (die Links wurden schon genannt), die auch dabei helfen, objektorientiert zu denken und zu programmieren. Den VB6-Namespace sehe ich da eher als Hindernis. Dass man manchmal den My-Namespace verwenden kann/muss, um an manche Sachen ranzukommen, z.B. Settings, Resources (obwohl es da bestimmt Alternativen gibt), schließe ich nicht aus.
    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.

    ThomasG82 schrieb:

    Ich persönlich benutze auch die Methode des Namespace
    Hier geht es nicht um Namespace im allgemeinen, sondern um den ​VisualBasic Namespace, der Methoden beinhaltet, die ursprünglich für die Kompatibilität mit VB6 erschaffen wurden.
    Das Problem hierbei ist die Tatsache, dass sich dieser Namespace (immer noch) automatisch in VB.Net-Projekten integriert.
    Dadurch sollte ursprünglich VB6-Entwicklern der Umstieg erleichtert werden.
    Aber gleichzeitig steht er in vielen Fällen der objektorientierte Denkweise im Weg.
    Deswegen ist die Verwendung hier im Forum (zurecht) verpönt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --