none
Fehler bei Typenkonvertierung RRS feed

  • Frage

  • Hallo Leute,

    kann mir einer erklären, warum folgende Anweisung zu einem Fehler führt,
    wenn die Tag-Eigenschaft einen Wert von 1 hat?   :-?

    iCol = CInt(If(myList.Tag = "", "1", myList.Tag))

    myList.tag enthält nur: "",0,1
    Bei einem fehlenden Wert ("") kommt es nicht zu einem Fehler.

    Vielen Dank im voraus.

    Gruß Ahmed


    Antworten bitte nur in der Newsgroup
    Windows 7 64bit Home Premium
    Office Prof. 2010

    Samstag, 28. Januar 2012 14:55

Antworten

  • Hallo Ahmed,

    die Tag Eigenschaft ist, wenn Du Ihr noch keinen Wert zugewiesen hast gleich nothing.

    Stell es Dir so vor: Wenn Du eine Variable in Dein Projekt einführst, welche eine Instanz einer Klasse beinhalten soll und diese nicht mit new() initialisierst hat diese Variable auch den Wert nothing.

    Richtig würde also Deine Zeile Code so aussehen:

    iCol = CInt(If(myList.Tag Is Nothing, "1", myList.Tag))
    

    Du solltest generell immer auch mit Option Strict On programmieren.

     

     


    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/
    Samstag, 28. Januar 2012 15:48
  • Ich habe auch festgestellt, dass die Tag-Eigenschaft Zahlen schon typenkonform als Integer speichert. Daher ist eine Typenkonvertierung eigentlich gar nicht notwendig ist. Gruß Ahmed

    Wenn Du Option Strict On eingestellt hast, dann stimmt das nicht.

     Du erhältst dann nämlich eine Fehlermeldung "Fehler 1 "Option Strict On" lässt keine impliziten Konvertierungen von Object in Integer zu. "

     


    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/
    Samstag, 28. Januar 2012 17:03

Alle Antworten

  • Am Sat, 28 Jan 2012 14:55:20 +0000 schrieb Ahmed Martens:

    Hallo Leute,

    kann mir einer erklären, warum folgende Anweisung zu einem Fehler führt,
    wenn die Tag-Eigenschaft einen Wert von 1 hat?   :-?

    iCol = CInt(If(myList.Tag = "", "1", myList.Tag))

    myList.tag enthält nur: "",0,1
    Bei einem fehlenden Wert ("") kommt es nicht zu einem Fehler.

    Vielen Dank im voraus.

    Gruß Ahmed

    Ich glaube der Fehler liegt daran, dass die Tag-Eigenschaft mind. einmal
    mit myList.Tag="" initialisiert werden muss, da ansonsten ein Nothing
    zurückgegeben wird.

    Kann das jemand bestätigen?

    Gruß Ahmed


    Antworten bitte nur in der Newsgroup
    Windows 7 64bit Home Premium
    Office Prof. 2010

    Samstag, 28. Januar 2012 15:13
  • Hallo Ahmed,

    die Tag Eigenschaft ist, wenn Du Ihr noch keinen Wert zugewiesen hast gleich nothing.

    Stell es Dir so vor: Wenn Du eine Variable in Dein Projekt einführst, welche eine Instanz einer Klasse beinhalten soll und diese nicht mit new() initialisierst hat diese Variable auch den Wert nothing.

    Richtig würde also Deine Zeile Code so aussehen:

    iCol = CInt(If(myList.Tag Is Nothing, "1", myList.Tag))
    

    Du solltest generell immer auch mit Option Strict On programmieren.

     

     


    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/
    Samstag, 28. Januar 2012 15:48
  • Hall Heslacher,

    Am Sat, 28 Jan 2012 15:48:32 +0000 schrieb Heslacher:

    Hallo Ahmed,

    die Tag Eigenschaft ist, wenn Du Ihr noch keinen Wert zugewiesen hast gleich nothing.

    Stell es Dir so vor: Wenn Du eine Variable in Dein Projekt einführst, welche eine Instanz einer Klasse beinhalten soll und diese nicht mit new() initialisierst hat diese Variable auch den Wert nothing.
    Richtig würde also Deine Zeile Code so aussehen:


    iCol = CInt(If(myList.Tag Is Nothing, "1", myList.Tag))

    Du solltest generell immer auch mit Option Strict On <http://msdn.microsoft.com/en-us/library/zcd4xwzs(v=VS.90).aspx> programmieren.

    vielen Dank für die Info. Ich habe auch festgestellt, dass die Tag-Eigenschaft Zahlen schon typenkonform als Integer speichert. Daher ist eine Typenkonvertierung eigentlich gar nicht notwendig ist. Gruß Ahmed


    Antworten bitte nur in der Newsgroup Windows 7 64bit Home Premium Office Prof. 2010

    Samstag, 28. Januar 2012 16:48
  • Ich habe auch festgestellt, dass die Tag-Eigenschaft Zahlen schon typenkonform als Integer speichert. Daher ist eine Typenkonvertierung eigentlich gar nicht notwendig ist. Gruß Ahmed

    Wenn Du Option Strict On eingestellt hast, dann stimmt das nicht.

     Du erhältst dann nämlich eine Fehlermeldung "Fehler 1 "Option Strict On" lässt keine impliziten Konvertierungen von Object in Integer zu. "

     


    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/
    Samstag, 28. Januar 2012 17:03
  • Hallo Ahmed Martens,

    Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 9. Februar 2012 15:45
    Moderator