Code Verkürzen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von xX-Nick-Xx.

    Code Verkürzen

    hat jemand eine idee wie ich daraus weniger code mach :D ?!

    VB.NET-Quellcode

    1. Dim Button15 As Byte() = New UTF8Encoding(True).GetBytes("Selektierten Link Öffnen")
    2. Dim Label19 As Byte() = New UTF8Encoding(True).GetBytes("Mod ansicht")
    3. Dim Label35 As Byte() = New UTF8Encoding(True).GetBytes("Mod ändern")
    4. Dim Label22 As Byte() = New UTF8Encoding(True).GetBytes("Füllmenge")
    5. Dim Label31 As Byte() = New UTF8Encoding(True).GetBytes("Benötigte Zugkraft")
    6. Dim Label23 As Byte() = New UTF8Encoding(True).GetBytes("Treibstoff")
    7. Dim Label30 As Byte() = New UTF8Encoding(True).GetBytes("Betrag pro stunde")
    8. Dim Label24 As Byte() = New UTF8Encoding(True).GetBytes("Preis")
    9. Dim Label29 As Byte() = New UTF8Encoding(True).GetBytes("Schwer")
    10. Dim Label2 As Byte() = New UTF8Encoding(True).GetBytes("Geschwindigkeit")
    11. Dim Label32 As Byte() = New UTF8Encoding(True).GetBytes("Normal")
    12. Dim Label26 As Byte() = New UTF8Encoding(True).GetBytes("Preis pro Tag")
    13. Dim Label33 As Byte() = New UTF8Encoding(True).GetBytes("leicht")
    14. Dim Label28 As Byte() = New UTF8Encoding(True).GetBytes("Lebenszeit")
    15. Dim Label7 As Byte() = New UTF8Encoding(True).GetBytes("Füllmenge: ")
    16. Dim Label8 As Byte() = New UTF8Encoding(True).GetBytes("Treibstoff: ")
    17. Dim Label6 As Byte() = New UTF8Encoding(True).GetBytes("Preis: ")
    18. Dim Label11 As Byte() = New UTF8Encoding(True).GetBytes("Preis pro Tag")
    19. Dim Label3 As Byte() = New UTF8Encoding(True).GetBytes("Kategorie: ")
    20. Dim Label12 As Byte() = New UTF8Encoding(True).GetBytes("Lebenszeit: ")
    21. Dim Label17 As Byte() = New UTF8Encoding(True).GetBytes("Benötigte Zugkraft: ")
    22. Dim Label13 As Byte() = New UTF8Encoding(True).GetBytes("Betrag pro Stunde:")
    23. Dim Label14 As Byte() = New UTF8Encoding(True).GetBytes("Schwer: ")
    24. Dim Label15 As Byte() = New UTF8Encoding(True).GetBytes("Normal: ")
    25. Dim Label16 As Byte() = New UTF8Encoding(True).GetBytes("Leicht: ")
    26. Dim Button8 As Byte() = New UTF8Encoding(True).GetBytes("Speichern")
    27. Dim Button7 As Byte() = New UTF8Encoding(True).GetBytes("Mod Hinzufügen")
    28. fs.Write(Button15, 1, Button15.Length)
    29. 'etc... noch nicht ganz fertig


    Danke im vorraus :D

    VB.NET-Quellcode

    1. Module Extensions
    2. <System.Runtime.CompilerServices.Extension()>
    3. Public Function ToBytes(s As String) As Byte()
    4. Return New System.Text.UTF8Encoding(True).GetBytes(s)
    5. End Function
    6. End Module

    VB.NET-Quellcode

    1. Dim Button15 As Byte() = "Selektierten Link Öffnen".ToBytes()
    2. Dim Label19 As Byte() = "Mod ansicht".ToBytes()
    3. Dim Label35 As Byte() = "Mod ändern".ToBytes()
    4. Dim Label22 As Byte() = "Füllmenge".ToBytes()
    5. ...
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.

    xX-Nick-Xx schrieb:

    in einer txt
    Da kannst Du auch Strings reinschreiben, ohne sie in Bytes konvertieren zu müssen.
    Kannst Du mal das Gesamtproblem darstellen?
    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!

    Pascalony schrieb:

    verschlüsselt
    elementare Texte von Controls?
    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!
    @xX-Nick-Xx Dann nimm System.IO.File.WriteAllText(...) oder System.IO.File.AppendAllText(...).
    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!

    ~blaze~ schrieb:

    aber der Grund, warum du das machen möchtest, erschließt sich mir nicht.

    Der Hintergrund würde mich auch interessieren. Sieht so aus als wenn man die Beschriftung von Controls in eine .txt speichern möchte... Falls dem so wäre könnte man diese ja per Schleife durch gehen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ich frag einfach mal nicht nach dem Grund, das haben schließlich genug andere vor mir getan^^
    Es handelt sich vermutlich um alle Controls innerhalb der Form. Wenn du lediglich deren Beschriftung niederschreiben möchtest, dann kannst du in einer Schleife alle Controls durchlaufen und über die Eigenschaft Controls.Text die Beschriftung abrufen.

    Es führen viele Wege nach Rom. Man könnte sich beispielsweise einen IO.StreamWriter hernehmen und dann durch alle Controls iterieren und deren Beschriftungen Zeile für Zeile niederschreiben.

    VB.NET-Quellcode

    1. Using writer As New StreamWriter("[Pfad]")
    2. For Each control As Control In Controls
    3. writer.WriteLine(control.Text)
    4. Next
    5. End Using

    Zur Erklärung:
    Der StreamWriter liegt in einem Using-Block damit automatisch aufgeräumt wird (Dispose() - Aufruf), sobald seine Arbeit getan ist.
    For Each ist dir bestimmt ein Begriff, ansonsten würde ich einfach mal danach googeln oder direkt bei der MSDN vorbeischauen.

    Wenn du es wirklich auf einen eher unübersichtlichen Einzeiler runterbrechen willst, kannst du das auch per Linq machen.

    VB.NET-Quellcode

    1. System.IO.File.WriteAllText("[Path]", String.Join(Environment.NewLine, Me.Controls.Cast(Of Control).Select(Function(x) x.Text)))

    Hier nutze ich die Linq-Erweiterungsmethoden, um direkt eine "Aufzählung" IEnumerable(Of String) zu erhalten mit den Beschriftungen aller Controls und formatiere diese entsprechend mittels String.Join.
    Die Funktion kann die einzelnen Elemente eines IEnumerable(Of String) zusammenführen bzw. aneinanderhängen, sodass jedes dieser einzelnen Elemente durch eine vorgegebene Trennzeichenkette getrennt ist.
    Die Trennzeichenkette in diesem Fall ist Environment.NewLine, also einfach ein Zeilenumbruch, da ich das selbe Ergebnis wie oben erreichen wollte.

    Für den Fall, dass du für jedes Steuerelement eine eigene Zeichenfolge definieren möchtest (abseits der Beschriftung), empfiehlt sich statt Control.Text evtl. die Eigenschaft Control.Tag.

    MfG Tim

    mrMo schrieb:

    Sieht so aus als wenn man die Beschriftung von Controls in eine .txt speichern möchte

    @xX-Nick-Xx Falls Du Dein Programm mehrsprachig machen willst, gugst Du Programme mehrsprachig erstellen.
    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!