schrittweise Ersetzung von VB6-Methoden

  • VB.NET
  • .NET 4.5

Es gibt 48 Antworten in diesem Thema. Der letzte Beitrag () ist von Dksksm.

    Soo, ich hab mal einen Vergleich des letzten Backups und der aktuellen Version laufen lassen, fast 1100 Änderungen, aber Fehlerliste hat eine 0 und das Häkchen ist bei Visual Basic in den Projekt Eigenschaften raus.

    Erste Tests diverser Programmmodul verlaufen vielversprechend, keine Abstürze und die zu erwartenden Ergebnisse, 7 Denk- bzw. Umsetzungfehler habe ich noch gefunden und korrigiert.
    Nun werde ich ganz viele (+1 -1) bei indexof rausnehmen ( habe es erstmal stumpf überall reingeschrieben um zu sehen, ob ich richtig konvertiert habe) und div. Kleinkram korrigieren.

    Ich habe aber noch eine Handvoll ungelöste Baustellen, die ich nur mit Microsoft.Visualbasic. bis dato umgesetz bekommen habe.
    Da wäre ich über ein paar Hinweise glücklich.

    VB.NET-Quellcode

    1. Microsoft.VisualBasic.InputBox

    Die muss ich soweit ich das sehe durch eine eigene Form/o.ä. ersetzen, korrekt ?
    Erledigt

    VB.NET-Quellcode

    1. Dim KW As Integer = Microsoft.VisualBasic.DatePart(Microsoft.VisualBasic.DateInterval.WeekOfYear, Datum, Microsoft.VisualBasic.FirstDayOfWeek.Monday, Microsoft.VisualBasic.FirstWeekOfYear.FirstFourDays)

    Hier scheitere ich dran, die Zeile berechnet die korrekte Kalenderwoche anhand eines Datums.
    WIe bekomme ich ie die MS.VB. Sachen raus ? Mit Datetime komme ich irgendwie nicht weiter
    Erledigt

    VB.NET-Quellcode

    1. strClassName = Microsoft.VisualBasic.Space$(64)
    2. nRetVal = GetClassName(hwnd, strClassName, strClassName.Length)
    3. strClassName = Microsoft.VisualBasic.Left$(strClassName, CInt(nRetVal))

    Erledigt
    Ein Programmcode zum Finden von Windows-Fenstern, nicht von mir geschrieben.
    Hier scheitere ich leider auch, komme mit Suche und Foren nicht weiter. Liegt eventuell daran, das ich nicht weis was der Code genau macht, aber er läuft halt.

    VB.NET-Quellcode

    1. Microsoft.VisualBasic.UCase$(strWndTitle)

    Dito, würde es mit .toUpper lösen, aber was genau machen die "$" hier drin ?
    Erledigt

    VB.NET-Quellcode

    1. CType(1, Microsoft.VisualBasic.CompareMethod)

    Habe ich in einigen alten instr drin, wahrscheinlich aus gutem Grund. Wie setzt ich die mit indexof um ? (Frage hatte ich oben schonmal, ist aber untergegangen.)
    Erledigt

    VB.NET-Quellcode

    1. Filedata.Replace(Microsoft.VisualBasic.Chr(13), ""))

    Erledigt

    VB.NET-Quellcode

    1. VK1 = Microsoft.VisualBasic.FormatCurrency(Microsoft.VisualBasic.Val(AlleZeilen(i)(16).Trim), 2)

    Die sind mir schon fast peinlich, aber ich finde es nicht...(Wald...viel Wald)

    VB.NET-Quellcode

    1. Microsoft.VisualBasic.DateAdd("d", -1, DateTime.Now)

    Erledigt

    Auch hier finde ich in der MS-Doku nur VB6 Codebeispiele. Gibt es da einen Trick beim suchen ?

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Mabbi“ ()

    Mabbi schrieb:

    Microsoft.VisualBasic.InputBox
    Da machst Du Dir einen separaten Dialog für.
    Space() macht wohl einen entsprechend langen mit Leerzeichen gefüllten String: Dim x = New String(" "c, 10)
    Nimm diese Prozeduren in das Testprojekt und sieh nach, was sie tun.
    Frage außerdem die Microsoft Hilfe, da steht eine ordentliche Beschreibung drinne.
    CType(1, Microsoft.VisualBasic.CompareMethod) konvertiert aus einer Zahl 1 ein Enumber des Wertes 1.
    Dort musst Du dann den richtigen Enum einsetzen.
    Microsoft.VisualBasic.DateAdd("d", -1, DateTime.Now) holt Dir den gestrigen Tag:

    VB.NET-Quellcode

    1. Dim dd = DateTime.Now.AddDay(-1)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Mabbi schrieb:

    Dito, würde es mit .toUpper lösen, aber was genau machen die "$" hier drin ?
    Das $ fällt ersatzlos weg.
    Das Comparison-Argument fällt ebenfalls ersatzlos weg, siehe MSDN zum Thema, was es als Werte gab.
    Die VB6-InputBox kannst Du schon nutzen, habe ich auch lange Zeit gemacht, ohne die restlichen VB6-Anachronismen zu nutzen. Inzwischen hab ich mir dafür und auch für die MessageBox (ja, die VB.NET!) Ersatz gebaut.
    Mit Kandidaten wie Chr(13) hab ich mir mit eigenen Konstanten beholfen. So kann ich (anscheinend) ein Leben ohne VB6-Partikel ausleben und genießen.
    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.
    Hallo,

    vielen Dank für Eure Unterstützung.
    Kleines update, bin die letzten Tage aber leider nicht zu viel gekommen.

    VB.NET-Quellcode

    1. Dim dd = DateTime.Now.AddDay(-1)

    Den hätte ich wohl auch selber finden können, danke Rod.

    ms.vb.Inputbox habe ich nun durch einen relativ komplexe und evtl. auch überambitionierte Form gelöst.

    Die kann nun per public properties sehr dynamisch faktisch alles darstellen und zurückgeben was ich jemals brauche.
    Einfache Abfragen, Abfragen mit Eingaben
    Das ganze mit:
    1-3 dynamische buttons (Text variablel. Posi und Dimensionen)
    dynmaischer form berechnet anhand der Position und größe des Fragetextes und des Eingabefeldes, dynmaischer Titel, dynamischer Fragetext...
    Buttons positioniern sich wenn gewollt automatisch symmetrisch in den Ecken
    Rückgabewertprüfung dynamisch anhand von Vorgabe beim Aufruf
    Und div. andere Funktionen
    Ist größer geworden als ich wollte und hat nun alle Inputbox und schon viele messagBox.show einfach ersetzt

    Hierzu habe ich noch eine Frage:
    Die ganze Dynamik löse ich aktuell so:

    VB.NET-Quellcode

    1. 'Drucken
    2. Dim Eingabe As Boolean = False
    3. 'Nur zulaessige Eingaben oder Abbruch erlauben
    4. Do While Eingabe = False
    5. frmEingabe.frm_IN_Text = "RNR Druck"
    6. frmEingabe.frm_IN_Frage = "Reparatur-Nr.: " & RNR.ToString & " wurde erzeugt. Wieviele Etiketten drucken ?"
    7. frmEingabe.frm_IN_Ergebnis = "Eingabe"
    8. frmEingabe.frm_IN_Uebergabe = "1" 'Default MAGIC
    9. frmEingabe.frm_IN_frmCall = Nothing
    10. frmEingabe.frm_IN_width = 370
    11. frmEingabe.frm_IN_height = 150
    12. '-15 für Rahmenbreite Breite, -50 Hoehe
    13. frmEingabe.frm_IN_txtDia_TOP = 35
    14. frmEingabe.frm_IN_txtDia_left = 15
    15. frmEingabe.frm_IN_txtDia_width = frmEingabe.frm_IN_width - 25 - 15
    16. frmEingabe.frm_IN_txtDia_height = 25
    17. frmEingabe.frm_IN_BTN1_width = 100
    18. frmEingabe.frm_IN_BTN1_height = 25
    19. frmEingabe.frm_IN_BTN1_TOP = frmEingabe.frm_IN_height - frmEingabe.frm_IN_BTN1_height - 50
    20. frmEingabe.frm_IN_BTN1_left = 25
    21. frmEingabe.frm_IN_BTN2_width = 100
    22. frmEingabe.frm_IN_BTN2_height = 25
    23. frmEingabe.frm_IN_BTN2_TOP = frmEingabe.frm_IN_height - frmEingabe.frm_IN_BTN2_height - 50
    24. frmEingabe.frm_IN_BTN2_left = frmEingabe.frm_IN_width - frmEingabe.frm_IN_BTN2_width - 25 - 15
    25. frmEingabe.ShowDialog()
    26. 'Prüfen
    27. If Integer.TryParse(frmEingabe.frm_IN_Ergebnis, Nothing) = True Then
    28. Eingabe = True
    29. End If
    30. 'Cancel Button
    31. If frmEingabe.frm_IN_Ergebnis = "Eingabe" Or frmEingabe.frm_IN_Ergebnis = "BTN_Abbruch" Then Eingabe = True
    32. Loop
    33. 'Secu Sinnvoller Wert->dann schreiben
    34. If frmEingabe.frm_IN_Ergebnis <> "" And Integer.TryParse(frmEingabe.frm_IN_Ergebnis, Nothing) = True Then
    35. If CInt(frmEingabe.frm_IN_Ergebnis) > 0 And CInt(frmEingabe.frm_IN_Ergebnis) < 5 Then
    36. ...


    Gibt es eine Möglichkeit beim Aufrufen eines Forms Variablen direkt zu übergeben wie wenn ich eine Funktion oder ein Unterprogramm aufrufe ?
    Aktuell löse ich das über public property, ist aber ein ziemlicher Klops der Aufruf.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mabbi“ ()

    Naja, viel kann man da nicht machen. Wenn Du immer alle Einstellungen brauchst, dann musst Du entweder zahlreiche Paramter übergeben. Oder eben einen komplexen Parameter, in dem Du alles drinhast.
    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.
    @Mabbi Kein Problem.
    Mach Dir eine Shared Prozedur wie bei einer MessageBox und gib der die betreffenden Parameter mit, dabei kannst Du Dich an der VB6-InputBox orientieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Dim KW As Integer = Microsoft.VisualBasic.DatePart(Microsoft.VisualBasic.DateInterval.WeekOfYear, Datum, Microsoft.VisualBasic.FirstDayOfWeek.Monday, Microsoft.VisualBasic.FirstWeekOfYear.FirstFourDays)



    Hier scheitere ich dran, die Zeile berechnet die korrekte Kalenderwoche anhand eines Datums.
    WIe bekomme ich ie die MS.VB. Sachen raus ? Mit Datetime komme ich irgendwie nicht weiter


    ist fast gleich mit .NET

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. Debug.WriteLine(GetKWfromDate(CDate("02.01.2021")))
    5. Debug.WriteLine(GetKWfromDate(CDate("12.05.2021")))
    6. Debug.WriteLine(GetKWfromDate(CDate("31.12.2021")))
    7. End Sub
    8. Public Function GetKWfromDate(ByVal Datum As Date) As Byte
    9. Return CByte(DatePart(DateInterval.WeekOfYear, _
    10. Datum, FirstDayOfWeek.System, _
    11. FirstWeekOfYear.System))
    12. End Function
    13. End Class
    @rod und vaporized: Ja, das sehe ich genauso. Mein Ansatz war deutlich zu komplex bzw. wurde es beim rumbasteln. Ich schwanke aktuell noch zwischen einer Lösung mit public property und 4-5 definierten Vorlagen und einer shared Prozedur, da lese ich mich aktuell gerade ein.

    @Kasi:

    VB.NET-Quellcode

    1. CByte(DatePart(DateInterval.WeekOfYear, Datum, FirstDayOfWeek.System, FirstWeekOfYear.System))


    Der Code braucht doch genau wie meiner das Microsoft.VisualBasic aktiviert in den Projekteigenschaften oder als Import, genau das will ich ja gerade beerdigen, oder verstehe ich hier etwas falsch ?

    Habe die Fragestellung mit viel lesen im Msdn nun selber gelöst, so sollte die korrekte KW eines Datums errechnet werden (hoffe ich :) )

    VB.NET-Quellcode

    1. Dim KW as integer = System.Globalization.CultureInfo.CurrentCulture.Calendar.GetWeekOfYear_
    2. (Datum, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Mabbi“ ()

    sorry das habe ich komplett überlesen..
    Der Code braucht doch genau wie meiner das Microsoft.VisualBasic aktiviert in den Projekteigenschaften oder als Import, genau das will ich ja gerade beerdigen, oder verstehe ich hier etwas falsch ?


    dann must du mit CultureInfo bzw. GregorianCalendar arbeiten

    hier ein paar bsp.

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Globalization
    3. Public Class Form1
    4. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    5. Dim myCultureInfo As New CultureInfo("de-DE")
    6. Dim myCalendar As Calendar = myCultureInfo.Calendar
    7. Dim myCWR As CalendarWeekRule = myCultureInfo.DateTimeFormat.CalendarWeekRule
    8. Dim myDate As DayOfWeek = myCultureInfo.DateTimeFormat.FirstDayOfWeek
    9. Debug.WriteLine(myCalendar.GetWeekOfYear(CDate("02.01.2021"), myCWR, myDate))
    10. Debug.WriteLine(myCalendar.GetWeekOfYear(CDate("12.05.2021"), myCWR, myDate))
    11. Debug.WriteLine(myCalendar.GetWeekOfYear(CDate("31.12.2021"), myCWR, myDate))
    12. End Sub
    13. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    14. Dim dc As New System.Globalization.GregorianCalendar()
    15. Dim formatInfo = System.Globalization.DateTimeFormatInfo.CurrentInfo
    16. ListBox1.Items.Add("Jahr" & "-" & "Tage " & "-" & "Monat ")
    17. ListBox1.Items.Add("-----------------------------------------")
    18. 'schreibe in Text datei
    19. Using sw As New IO.StreamWriter("E:\TestFolder\TestfileYear_Days.txt")
    20. For i = 1963 To 2019
    21. ListBox1.Items.Add("-----------------------------------------")
    22. ListBox1.Items.Add(CStr(i) & " - " & dc.GetDaysInYear(i))
    23. For y = 1 To 12
    24. Dim monthName = formatInfo.GetMonthName(y)
    25. sw.WriteLine(CStr(i) & " " & dc.GetDaysInMonth(i, y) & " " & monthName)
    26. 'zeige in Listbox
    27. ListBox1.Items.Add(CStr(i) & " - " & dc.GetDaysInMonth(i, y) & " - " & monthName)
    28. Next
    29. Next
    30. sw.Close()
    31. End Using
    32. End Sub
    33. End Class
    @Kasi, weiter oben hatte ich für die KW-Bestimmung anhand eines Datums (im Date-format) schon eine Lösung gepostet
    Dein Post hilft mir noch an 2 anderen Stellen weiter ... :) , vielen Dank

    Noch ein paar kleine Baustellen gelöst:

    VB.NET-Quellcode

    1. 'Filedata = Filedata.Replace(Microsoft.VisualBasic.Chr(13), "")
    2. Filedata = Filedata.Replace(Convert.ToChar(13), "")

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mabbi“ ()

    Hmmm..ich habe oben optimistisch ERLEDIGT eingetragen bei:

    Quellcode

    1. CType(1, Microsoft.VisualBasic.CompareMethod)

    was ja für TEXT-Vergleich als Methode und nicht Binär-Vergleich steht

    dieses habe ich ersetzt durch das hier:

    Quellcode

    1. StringComparison.Ordinal


    Msdn verwendetan vielen Stellen "Ordinal", ich finde aber keine wirkliche Erklärung dazu, was das genau macht.
    Nun teste ich und alles läuft einwandfrei, aber kann mir jemand mal bitte sagen, ob das ORDINAL da richtig ist und was das genau bedeutet ?
    Ich befürchte, das eine (Text) hat mit dem "Ordinal" mal gar nichts zu tun und es läuft nur weil die Comparemethod dort eh vielleicht überflüssig war ...

    Hier hilft mir weder mein gr. Latinum(ordo) noch die algemeine wiki Seite wirklich weiter.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mabbi“ ()

    Mabbi schrieb:

    dieses habe ich ersetzt durch das hier
    Bevor Du da irgend etwas ersetzt, solltest Du Dich vergewissern, ob das sinnvoll ist.
    Frage Frau Google nach
    StringComparison Enumeration und Microsoft.VisualBasic.CompareMethod.
    Ich hatte Dir bereits ganz genau geschrieben, was CType(1, Microsoft.VisualBasic.CompareMethod) bedeutet. Ordinal sollte da nicht vorkommen.
    Gehe in Dich, lies nach und unterbreite uns einen neuen Vorschlag.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Kasi Führe folgenden Code aus:

    VB.NET-Quellcode

    1. Dim cm = CType(1, Microsoft.VisualBasic.CompareMethod)
    2. MessageBox.Show(cm.ToString())
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    @Rod: Die Methode ausprobieren und anhand des Ergbnisses abzuleiten ob es richtig ist, ist eher suboptimal, da gebe ich dir recht.

    Aber langsam macht sich Verzweifelung breit....das kann doch nicht so kompliziert sein.
    Also:

    Quellcode

    1. Public Enum StringComparison
    2. Vererbung>Object>ValueType>Enum

    sieht für mich genau gleich aus wie

    Quellcode

    1. Public Enum CompareMethod
    2. Vererbung>Object>ValueType>Enum


    Ich habe mich jetzt durch mindestens 6 Seiten gehangelt in diversen Sprachen und bin nicht schlauer als vorher.
    Mir ist klar, das Ordinal der binär Vergleich ist und somit nicht dem TEXT-Vergleich der compareMethode entspricht, ich finde aber keinen Text-Vergleich bei String Comparison.
    Suche ich an der völlig falschen Stelle oder ist das einfach mal als depreciated deklariert worden und verschwunden?


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mabbi“ ()

    Neu

    Mabbi schrieb:

    das kann doch nicht so kompliziert sein.
    Public Enum StringComparison sieht für mich genau gleich aus wie Public Enum CompareMethod
    Das ist auch nicht weiter kompliziert.
    Nur wenn das für dich gleich aussieht - ich finde "StringComparison" und "CompareMethod" sehen ziemlich unterschiedlich aus.
    Ja, es sind beides Enum-Typen aber verschiedene. So einfach ist das - dazu muss man keine vielen Seiten in verschiedenen Sprachen studieren, findich.

    Mabbi schrieb:

    Mir ist klar, das Ordinal der binär Vergleich ist und somit nicht dem TEXT-Vergleich der compareMethode entspricht, ich finde aber keinen Text-Vergleich bei String Comparison.
    Suche ich an der völlig falschen Stelle oder ist das einfach mal als depreciated deklariert worden und verschwunden?
    Ich weiss nicht recht, was du suchst.
    Suchst du den StringComparison-Wert, der dem CompareMethod.TEXT-Wert entspricht?

    Welche StringComparison-Werte gibt es denn - schau mal in den ObjectBrowser, und poste hier.

    Neu

    @ErfinderDesRades:

    Okay, ich finde bei
    comparemethode:
    Microsoft.VisualBasic.CompareMethod.Binary
    Microsoft.VisualBasic.CompareMethod.Text

    stringcomparison:
    System.StringComparison.CurrentCulture
    System.StringComparison.CurrentCultureIgnoreCase
    System.StringComparison.InvariantCulture
    System.StringComparison.InvariantCultureIgnoreCase
    System.StringComparison.Ordinal
    System.StringComparison.OrdinalIgnoreCase

    und ja...ich will die "Microsoft.VisualBasic" weg haben und suche eien passend Ersatz für "CompareMethod.Text"
    Benutzen will ich das in einer string.indexof() Abfrage die aus einer nun nicht mehr verwendeten instr() entstanden ist. (auch ein part der "VB-6 muss raus" Initiative)

    Neu

    Jo, also bietet StringComparison mehr Möglichkeiten des Textvergleiches als CompareMethod, nämlich:
    • Case-sensitiv oder nicht
    • lokal-kulturabhängig
    • von der Standard-Kultur abhängig
    • ordinal - nach codepunkt-reihenfolge statt nach kultur

    Ich weiss nicht genau, wie CompareMethod.TEXT sortiert, auf jeden Fall aber case-insensitiv und kulturabhängig.
    Die Frage ist nur, ob nach der lokalen Kultur oder nach der InvariantCulture.

    also StringComparison.CurrentCultureIgnoreCase oder StringComparison.InvariantCultureIgnoreCase tätich sagn.

    Neu

    @Mabbi Da der Thread schon auf Erledigt gesetzt wurde, habe ich bisher nichts gesagt, aber da es hier offenbar weitergeht: bitte passe den Threadtitel an, der jetzige ist relativ nichtsssagend.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Neu

    @Marcus Gräfe: Sorry, der thread ist aus einer einzelnen Fragestellung zu einem für mich sehr umfänglichen Änderung in meinem aktuellen Projekt geworden.
    Titel und Status angepasst.

    @ErfinderDesRades: Ich habe mir die Unterschiede durchgelesen und mich für StringComparison.CurrentCultureIgnoreCase entschieden. Somit konnte ich auch bei allen die .tolower für stringcheck und stringmatch rausnehmen.
    Nun verstehe ich auch, warum Rod Ordinal so schlecht fand, war definitiv der falsche Ansatz bei dem ersten Versuch.
    Wenn man es dann liest oder es aufgedröselt bekommt wie in Deinem Post ist es plötzlich ganz klar und einleuchtend .Vielen Dank dafür.
    Mir macht die für mich in vielen Bereichen sehr kryptische Formulierung auf den Msdn Sites das Leben wirklich schwer.
    Ich weis meistens was ich will, kann es aber aus den Seiten bis dato nur selten selber ableiten bzw. ist meine Fragestellung hier im Forum an Euch oft falsch oder unpräzise formuliert.

    Erinnert mich stark an meine ersten Mathevorlesungen im Studium... ich war damals ziemlich sicher Mathe ganz gut zu verstehen bzw. einen guten Zugang dazu zu haben.
    Mein Mathe Prof hat mir nach 45 Minuten in der allerersten Vorlesung deutlich das Gegenteil bewiesen... totaler Bahnhof. Tröstlich war, ich war nicht allein.
    Ich habe in meinem Leben noch nie soviel Zeit in ein einzelnes Fach investiert wie in Mathe in den Propädeutika, und das mit Erfolg.
    Diese Einstellung habe ich glücklicherweise nie wieder abgelegt. Und es gibt noch so viel zu lernen. :)


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mabbi“ ()