String in Integer Speichern

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    per cint() in einen string umwandeln? meinst du nicht cstr()?
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
    @TG22997: mir gings um die deffinierung cint wandelt sicher nichts in einen string um?
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
    Hi
    übrigens: gibt SelectedText nicht auch für ComboBoxen den ausgewählten Text an? Sollte eigentlich SelectedItem sein bzw. SelectedValue, wenn der Wert des im ValueMember angegebenen Members genommen werden soll. Indices sind halt eher schlecht zu speichern. Das beste wär wahrscheinlich, du würdest einfach den Wert des Members anders identifizieren (z.B. einen Schlüssel dafür verwenden) und dann mit DisplayMember und ValueMember arbeiten. Eine Liste mit den Werten übergeben:

    VB.NET-Quellcode

    1. Public Class MyComboBoxItem(Of T)
    2. Public Property Key As Guid ' oder String?
    3. Public Property Value As T
    4. End Class

    Da kannst du ja im Hintergrund entsprechend ein Dictionary verwenden (oder evtl. geht es auch per System.Collections.ObjectModel.KeyedCollection(Of TKey, TValue), weiß gerade nicht, ob die nicht IDictionary(Of TKey, TValue) implementiert, Sinn würd's ja machen, die könntest du dann direkt an die DataSource binden). Auf jeden Fall kannst du dann in My.Settings den eindeutigen Schlüssel ablegen, statt des Werts, sofern nicht der Wert selber bereits mit 100prozentiger Sicherheit für immer ein eindeutiger Schlüssel sein wird. Ist halt ein kleiner architektureller Aufwand, das so zu machen.

    Konvertierungen werden folgendermaßen durchgeführt:
    - Benutzereingaben werden per <Typ>.TryParse interpretiert
    - Eingaben, die aus für den Benutzer eigentlich unzugänglichen Quellen kommen (z.B. string-basierte Einstellungsdateien) per <Typ>.Parse
    - Konvertierungen zu einem String per ToString oder System.Convert.ToString
    - Konvertierung zwischen den Datentypen mit CInt, CLng, ... - CStr ist kein primitiver Datentyp
    - Konvertierung zwischen anderen Typen per CType
    - Innerhalb der Vererbung, wenn man bereits weiß, dass etwas ein bestimmter Typ ist, per DirectCast.
    Wenn man die String-Konvertierung, die auch im PropertyGrid verwendet wird, verwenden will, kann man System.ComponentModel.TypeDescriptor.GetConverter verwenden. Strings gehen z.B. per ConvertToString oder ConvertFromString. Integer, etc. haben solche Typ-Converter ebenfalls.

    Gruß
    ~blaze~

    Glossy Cherry schrieb:

    @TG22997: mir gings um die deffinierung cint wandelt sicher nichts in einen string um?

    Die CInt-Funktion wandelt einen Ausdruck in den Datentyp Integer um...
    Ich verstehe nich was du daran nicht verstehst... wenn ich einen numerischen String in einen INteger umwandeln
    möchte mach ich das mit CINT([String]) ....

    klar gibts da schönere möglichkeiten

    MfG Tim ;D
    Dann sollt' man auch die schöneren verwenden ;). Die Standardkonvertiermethoden (CSByte, CByte, CShort, CUShort, CInt, CUInt, CLng, CULng, CSng, CDbl und evt. sogar Chr, Asc, aber tendenziell wahrscheinlich eher nicht CDec) können vom Compiler bei der Konvertierung von primitiven Datentypen gesondert behandelt werden.
    Hier sieht man eine vollständige Liste der OpCodes, die vollständige Definition von der CIL gibt's in der ECMA-335 und die gibts kostenlos zum Download. Auf jeden Fall sieht man ja bereits da, dass es keine Konvertierung (conv.*), bei der Strings verarbeitet werden. CStr wird zu einem Methodenaufruf umgewandelt, der irgendwo in Microsoft.VisualBasic flackt und offenbar nicht identisch arbeitet, wie ToString und die Konvertierung durch CInt von einem String arbeitet auch nicht, wie Parse, glaub' ich. Bin grad' zu faul, das mal durch nen Disassembler durchzujagen. Daher find' ichs besser, wenn man das Standardverhalten "erzwingt" und Integer.Parse verwendet, etc. die sind ja quasi eh .Net-Standard und nicht reiner VB-Standard. Außerden bietet Parse weitaus größere Funktionalität an, als die VB-Konvertierungen.

    Gruß
    ~blaze~