Umlaute im Quelltext

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Umlaute im Quelltext

    Hallo Leute!

    Ich habe nun schon öfter Quelltexte von VB2012 gesehen, wo in Funktionen Umlaute verwendet wurden.
    Wie sieht das generell aus. Ist dies "offiziell" ok, oder kann es irgendwie zu Problemen führen?

    Beispiel:

    VB.NET-Quellcode

    1. Public Function Anwendung_läuft(ByVal Dateiname As String) As Boolean


    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Ich würde dir einfach davon abraten. Generell ist es gut, wenn du die Funktionen/Variablen/usw. auf englisch benennst, denn wenn ein anderer an deinem Projekt weiterarbeitet, der kein Deutsch kann, wird der im Quellcode nicht zurechtkommen. Evtl. machen die Umlaute auch Probleme mit dem Encoding.

    Funktionsnamen usw. englisch
    Kommentare, wenn möglich Englisch, ansonsten Deutsch.

    lg.
    @dive26:: Solange Du in Deinem Kämmerlein arbeitest, ist alles OK.
    Aber sobald Du mit anderen zusammenarbeitest, solltest Du Dich an gewisse Gepflogenheiten halten, und die erste ist, alle Namen im Quelltext englisch zu schreiben.
    Die zweite ist, entweder Kamelschreibweise oder Unterstriche:
    MyFirstProcedure oder my_first_procedure
    keinesfalls Mischungen dieser beiden.
    Sieh mal hier im Forum nach einem Guten Programmierstil, das ist ein gut geführter Thread iwo.
    Und:
    Du musst Deinen eigenen Stil finden.
    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!
    Ok Danke!

    denn wenn ein anderer an deinem Projekt weiterarbeitet, der kein Deutsch kann, wird der im Quellcode nicht zurechtkommen.
    Der Quellcode ist nur mir vorbehalten. Sollte mal irgendwer meinen Betrieb übernehmen (da hab ich aber noch 30 Jahre Zeit), dann sicher ein Deutschsprachiger Mensch ;)

    Meine eigentliche Frage, ob es technisch möglich bzw. von MS so freigegeben ist, wurde jedoch noch nicht beantwortet. Klar kann ich es auch statt ä ae schreiben. Aber ich würds schon gerne wissen ob es technisch geht.

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    dann werd ich mal Umlaute einfach vermeiden.

    Da dieser Thread dort schon sehr alt ist, wollte ich dort nicht mehr antworten.
    Liege ich falsch oder machen folgende beiden Codezeilen nicht das selbe?:

    VB.NET-Quellcode

    1. Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder(TextBox1.Text)
    2. Dim sb as String


    Oder hat das was mit der "Bearbeitbarkeit" dieses Strings im Nachhinein zu tun?
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    sonne75 schrieb:

    String und StringBuilder sind nicht das selbe.
    Jetzt habe ich wieder viel gelernt 8| :thumbdown: .
    Geholfen wäre mir, wenn erklärt würde was genau der Unterschied ist.
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Der liebe Moderator hat mich schon vor solchen Antworten wie Deinen gewarnt. Hauptsache der Beitragszähler wird höher. Aber egal, ist ja in den meisten Foren so. Und ich bin nicht nachtragend.

    @Alle die nicht mit ja oder nein antworten möchten und nicht extra wo nachlesen müssen:

    Für mich machen folgende beiden Codesegmente genau das Gleiche und ich verstehe nicht, warum man für solche einfachen Operationen so viel komplizierten Code verwenden soll.

    VB.NET-Quellcode

    1. 'Klasse
    2. Dim sb As New StringBuilder("ABC", 50)
    3. sb.Append(New Char() {"D"c, "E"c, "F"c})
    4. sb.Replace("E", "e")
    5. Me.TextBox1.Text = sb.ToString
    6. 'old scool VB
    7. Me.TextBox2.Text = "ABC"
    8. Me.TextBox2.AppendText("DEF")
    9. Me.TextBox2.Text = Me.TextBox2.Text.Replace("E", "e")



    VB Kurzfassung:

    VB.NET-Quellcode

    1. Me.TextBox2.AppendText("DEF")


    VB-NET Langfassung:

    VB.NET-Quellcode

    1. sb.Append(New Char() {"D"c, "E"c, "F"c})
    2. Me.TextBox1.Text = sb.ToString


    Ich sehe Ergebnistechnisch keinen Unterschied zwischen den obigen Codeschnippseln.
    Mir ist auch bewußt, dass VB6 auf VB.NET umsteiger anders "ticken" als Schulabgänger die "nur" VB.NET gelernt haben und das "normale" VB nicht kennen.
    Oder gibt es einen gravierenden Unterschied, auf den ich als VB6-Umsteiger nicht komme?

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    dive26 schrieb:

    Der liebe Moderator hat mich schon vor solchen Antworten wie Deinen gewarnt. Hauptsache der Beitragszähler wird höher. Aber egal, ist ja in den meisten Foren so. Und ich bin nicht nachtragend.

    Aha, interessant, dass DU mir meine Motivation erklärst, ist mir bisher noch gar nicht aufgefallen. Ein ganz klarer Fall für Ignore-Liste. :rolleyes:

    Merke dir für die Zukunft in diesem Forum: wie man in den Wald hineinruft, so schallt es auch heraus. Wenn du gleich mit solcher Anspruchshaltung kommst, alle sind hier verpflichtet dir ausführliche Antworten zu geben, die viel mehr als deine gestellte Frage beantworten, d.h. auch noch überlegen müssen, was du noch zu wissen bräuchtest - wirst du hier nicht viele gute Antworten bekommen...
    so nun mal Frisch aus der MSDN:

    MSDN schrieb:

    Unveränderlichkeit und die StringBuilder-Klasse

    Ein String-Objekt wird unveränderlich (schreibgeschützt) genannt, weil dessen Wert nach dem Erstellen nicht mehr geändert werden kann. Methoden, die ein String-Objekt scheinbar ändern, geben in Wirklichkeit ein neues String-Objekt zurück, das die Änderung enthält.

    Da Zeichenfolgen unveränderlich sind, können Zeichenfolgenbearbeitungsroutinen, die wiederholte Hinzufügungen oder Löschen ausführen kann, was scheint, eine einzelne Zeichenfolge zu sein, eine erhebliche Leistungseinbußen benötigen. Im folgenden Code wird z. B. ein Zufallsgenerator verwendet, um im Bereich 0x0001 bis 0x052F eine Zeichenfolge mit 1000 Zeichen zu erstellen. Obwohl der Code Zeichenfolgenverkettung zu verwenden scheint, um ein neues Zeichen an die vorhandene Zeichenfolge mit dem Namen str anzufügen scheint, erstellt er eigentlich ein neues String-Objekt für jeden Verkettungsvorgang.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text
    3. Module Example
    4. Public Sub Main()
    5. Dim rnd As New Random()
    6. Dim str As String = String.Empty
    7. Dim sw As New StreamWriter(".\StringFile.txt",
    8. False, Encoding.Unicode)
    9. For ctr As Integer = 0 To 1000
    10. str += ChrW(rnd.Next(1, &h0530))
    11. If str.Length Mod 60 = 0 Then str += vbCrLf
    12. Next
    13. sw.Write(str)
    14. sw.Close()
    15. End Sub
    16. End Module


    Sie können die StringBuilder-Klasse statt der String-Klasse für Vorgänge, die mehrere Änderungen am Wert einer Zeichenfolge vornehmen, verwenden. Im Gegensatz zu Instanzen der String-Klasse sind StringBuilder-Objekte änderbar; wenn Sie Teilzeichenfolgen verketten, anfügen oder aus einer Zeichenfolge löschen, werden die Vorgänge für eine einzelne Zeichenfolge ausgeführt. Wenn Sie mit dem Ändern des Werts eines StringBuilder-Objekts fertig sind, können Sie seine StringBuilder.ToString-Methode aufrufen, um ihn in eine Zeichenfolge zu konvertieren. Im folgenden Beispiel String ersetzt, das im vorherigen Beispiel verwendet wird, um 1000 zufällige Zeichen im Bereich zu 0x0001 zu 0x052F mit einem StringBuilder-Objekt zu verketten.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text
    3. Module Example
    4. Public Sub Main()
    5. Dim rnd As New Random()
    6. Dim sb As New StringBuilder()
    7. Dim sw As New StreamWriter(".\StringFile.txt",
    8. False, Encoding.Unicode)
    9. For ctr As Integer = 0 To 1000
    10. sb.Append(ChrW(rnd.Next(1, &h0530)))
    11. If sb.Length Mod 60 = 0 Then sb.AppendLine()
    12. Next
    13. sw.Write(sb.ToString())
    14. sw.Close()
    15. End Sub
    16. End Module


    so nun mal ein Punkt den die beiden unterscheidet. War unter dem Suchbegriff "string msdn" nach einem klick und ein wenig scrollen zu finden. Zeitaufwand? unter einer minute. Vielleicht ifndet sichg noch mehr, hab nun keine Lust weiter zu suchen.

    RodFromGermany schrieb:

    Gepflogenheiten halten, und die erste ist, alle Namen im Quelltext englisch zu schreiben.

    ...und wenn man das immer brav macht, hat man auch keine Probleme mit Umlauten, weil es im Englischen keine gibt. :P

    RodFromGermany schrieb:

    Die zweite ist, entweder Kamelschreibweise oder Unterstriche: MyFirstProcedure oder my_first_procedure
    Und falls man mit .NET arbietet, kann man sich auch an die MS-Guidelines halten. Hier die für generelle Benennung und hier die für Groß- und Kleinschreibung.
    Was man sich immer merken sollte: MS mag bei .NET die "Ungarische Schreibweise" nicht. Das ist die, bei der jede Variable als Präfix immer den Typen der Variable erhält (z. B. iAnzahlTeile oder CIrgendEineKlasse).
    Wenn man seinen eigenen einheitlichen Stil pflegt, ist das (IMO) aber auch in Ordnung.

    Zum Textbox-Problem:
    Die AppendText-Methode ist garantiert keine "old school VB"-Variante, da es AppendText unter VB6 nicht einmal gab.
    Der Unterschied zwischen TextBox1.Text &= VbCrLf & "Text" und TextBox1.AppendText(VbCrLf & "Text") ist, dass bei der AppendText-Herangehensweise die Textbox mit automatisch mitscrollt. Außerdem ist sie schneller.

    Warum StringBuilder? Der StringBuilder ist beim Zusammensetzen von Strings (deutlich) schneller. Das spielt bei den 3 Zeichen da aber keine Rolle und ist in diesem Zusammenhang deshalb eher unangebracht.
    Von meinem iPhone gesendet
    In .NET wird sehr auf Typsicherheit geachtet, leider ist diese in VB standardmäßig ausgeschaltet (Option Strict).
    Du machst momentan aus einer Liste von Char's einen String, andererseits verwendest Du äquivalent einen String.
    Schmökere mal ein wenig in der MSDN. Der wesentliche Unterschied zwischen String und StringBuilder ist der, dass ein String eigentlich nicht für "Textverarbeitung" konzipiert ist, so dass die Veränderung eines Textes sehr viel Aufwand erfordert. Dafür ist aber das Handling mit einem fixen String hoch optimiert.
    Der StringBuilder ist im Gegensatz dazu gemacht, Texte effizient zu bearbeiten.
    Du musst für Dich da den geeigneten Mittelweg finden.
    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!
    Danke Euch für die zahlreichen Antworten.

    Strings:
    Jetzt verstehe ich den Unterschied. Also dort wo es auf Geschwindigkeit ankommt StringBuilder und bei simlen Aufgaben die "lesbarere" Methode.

    Sprache/Umlaute:
    Ich werde zwar nicht alles in Englisch schreiben, da ich sonst die Funktionen selbst nicht mehr finde, aber ich werde auf Umlaute verzichten. Bei der Verwendung von deutschen Bezeichnungen für Methoden, Klassen und Funktionen laufe ich nicht Gefahr unabsichtlich einen VB internen Befehl als Bezeichnung zu verwenden (ich kenne ja bei weitem noch nicht alles).


    Ich gurke zwar immer zuerst (über Google) auch auf MSDN herum, aber leider finde ich nicht immer zielgerichtet die Info (bzw. stolpere darüber ohne zu wissen das das bereits die Lösung ist).
    Daher bin ich dankbar für die Infos, die ich von Euch hier so schön verständlich bekomme.
    Vielen Dank für die rasche Hilfe.
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    dive26 schrieb:

    laufe ich nicht Gefahr unabsichtlich einen VB internen Befehl als Bezeichnung zu verwenden
    Das wird nicht passieren, da .NET sich durch eine sehr ordentliche Struktur der NameSpaces identifiziert, und wenn in einem NameSpace eine Funktion 2 Mal mit gleicher Signatur auftauchen sollte, schimpft der Compiler.
    Gib Dir also einen ordentlichen NAmen für den Main NameSpace vor und Du hast dererlei Probleme nicht.
    Und
    Schreibe keine .NET-Erweiterungsfunktionen in .NET-NameSpaces, nimm stets Deine eigenen NameSpaces. :D
    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!