Hart Codierte Strings

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von giri.

    Hart Codierte Strings

    Liebe Forum-Mitglieder,
    ich hätte hie eine grundsätzliche Frage:
    Wie verhält es sich wenn ich im Code Hart-Codierte strings verwende mit der Culture, also was passiert wenn das Programm auf einem türkischen, chinesischen etc. System ausgeführt wird.
    Im konkreten Fall verwende ich solche Strings für die Datei-Abfrage in einem Add-In für Autodesk Inventor. Inventor speichert mehrere Versionen einer Datei im Ordner "OldVersions" und neue Dateien im Cach die noch nicht gespeichert sind mit dem Suffix "newVer"
    Hir ein Beispiel:

    VB.NET-Quellcode

    1. Public Shared Function GetEnumeratedFiles(ByVal path As String) As IEnumerable(Of IO.FileInfo)
    2. Dim DirInfo As IO.DirectoryInfo = New System.IO.DirectoryInfo(path)
    3. Dim fInfos As IEnumerable(Of IO.FileInfo) = Nothing
    4. fInfos = DirInfo.EnumerateFiles("*", IO.SearchOption.AllDirectories).Where(Function(f) f.FullName.Contains("OldVersions") = False AndAlso f.FullName.Contains(".newVer.") = False)
    5. Return fInfos
    6. End Function


    Es geht also hier um die beiden Strings OldVersions und .newVer.
    Funktioniert das so in allen Kulturen? Oder muß man hier Cultureabhängig was programmieren?
    Bitte um Aufklärung

    giri schrieb:

    Wie verhält es sich wenn ... wenn das Programm auf einem türkischen, chinesischen etc. System ausgeführt wird.

    Da kann es bei bestimmten Zeichen (Sonderzeichen) zu culture-mismatches kommen. Möglicherweise kann auf einem deutschen System eine Datei nicht gefunden werden, wenn

    VB.NET-Quellcode

    1. f.FullName.Contains("Erdoğan")
    Der von dir gezeigte Code aber dürfte kein Problem machen, weil OldVersions, .newVer. enthalten keine Sonderzeichen.
    Also: hard-codet Strings ausschliesslich aus dem ASCII-Zeichensatz bilden - das ist der kleinste gemeinsame Nenner aller Cultures.



    Richtig fies werden Culture-Unterschiede, wenn du Texte parsen musst, also aus einem String eine Zahl machen, oder ein Datum.
    Wenn du dabei nicht die Culture angeben kannst, in der der User den Text eingegeben hat, hast du verloren.
    einfaches Beispiel:
    "1.000" ist auf deutsch: tausend
    "1.000" ist auf en-us: eins

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