"@" in vb 2010 :|

  • VB.NET

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

    "@" in vb 2010 :|

    Ich weis das ist eine sehr dumme Frage :S
    Aber wie bekomme ich ein "@" in vb :?:

    VB.NET-Quellcode

    1. TextBox2.Text.Contains("@" And ".")

    Das ist der code.. nur kommt dann:
    "Ungültige Konvertierung von der Zeichenfolge @ in Typ Long."
    Ist das auch wieder in so {} wie bei {ENTER} oder wie heisst das? :S
    Ja das kannst du so nicht machen..
    Ja man kann einen String nicht mit einen Char verunden.. Allerdings vermute ich nicht das du hier eine Verundung vornehmen willst ;)

    VB.NET-Quellcode

    1. TextBox2.Text.Contains(Chr("64")) And TextBox2.Text.Contains(".")

    Versuch es so, das Funktioniert aber nur in einer If Abfrage oder einer Schleifenbedingung ;)
    lg.

    LucaWelker

    LucaWelker schrieb:

    Ja das kannst du so nicht machen..
    Ja man kann einen String nicht mit einen Char verunden.. Allerdings vermute ich nicht das du hier eine Verundung vornehmen willst ;)

    VB.NET-Quellcode

    1. TextBox2.Text.Contains(Chr("64")) And TextBox2.Text.Contains(".")

    Versuch es so, das Funktioniert aber nur in einer If Abfrage oder einer Schleifenbedingung ;)

    Hat super funktioniert :)
    (ja, sollte in IF für ein email feld^^)
    Das Problem an der Sache ist doch offensichtlich, Chr(65) gibt ein Char zurück, "." allerdings ist ein String, dieses Problem löst du - GMT - vielleicht nicht aber das, dass der Threadersteller IMHO die beiden Werte nicht Bitweiße Und-Verknüpfen möchte sondern das ganze in eine If-Abfrage o.ä. eingebaut wertden soll. Wenn dies der Fall ist, dann ist deinen Antwort absoluter Quatsch. Ansonsten, weiß ich nicht wie viel Sinn in deiner Antwort steckt, da ich nicht weiß wie man in Vb.NET Bitweiße verundet.
    lg.

    LucaWelker

    GMT schrieb:

    ausserdem VERSUCHEN IST was anderes als MACH!

    Spricht was gegen LIES MAL?
    msdn.microsoft.com/de-de/library/dy85x1sa(v=vs.80).aspx

    VB.NET-Quellcode

    1. Public Function Contains ( _
    2. value As String _
    3. ) As Boolean

    Also eine Funktion, die EINEN STRING ERWARTET (und nicht 2, 3 oder 192) und daraufhin einen Boolean zurückliefert.

    Und was ergibt: "A" AND "B"?
    Nix! Weil "AND" entweder eine logische Verknüpfung vornimmt (-> Boolean) oder aber eine BINÄRE Operation ausführt -> 2 AND 4 -> 0 bzw 1 AND 7 -> 1

    BTW: Um einen String auf mehrere Zeichen zu prüfen, bietet sich IndexOfAny an ...
    msdn.microsoft.com/de-de/library/11w09h50(v=VS.80).aspx

    VB.NET-Quellcode

    1. If e.Label.IndexOfAny(New Char() {"@"c, "."c, ","c, "!"c}) = -1 Then

    Keins der Zeichen wurde gefunden (Index < 0!)

    Gredsoft schrieb:

    Chr(65).ToString? Gibt's das?

    Thema wurde als erledigt markiert, sehe ich gerade, was war denn die Lösung, TE?

    Lösung war:
    Ja das kannst du so nicht machen..
    Ja man kann einen String nicht mit einen Char verunden.. Allerdings vermute ich nicht das du hier eine Verundung vornehmen willst ;)


    VB.NET-Quellcode

    1. TextBox2.Text.Contains(Chr("64")) And TextBox2.Text.Contains(".")



    Versuch es so, das Funktioniert aber nur in einer If Abfrage oder einer Schleifenbedingung ;)

    GMT schrieb:

    versuche es mal so

    VB.NET-Quellcode

    1. Dim Text As String
    2. Text = Chr(64)
    3. TextBox2.Text.Contains(text And ".")

    Sonst habe ich noch das hier gefunden:
    msdn.microsoft.com/de-de/library/s9cz43ek.aspx
    Hoffe konnte dir Helfen
    Grüße GMT



    Sollte man so trotzdem nicht machen, da hier einem String ein Wert zugewiesen wird, der als Char definiert ist. Darum müsste der Debugger AFAIK bei Option Strict on auch streiken..

    VB.NET-Quellcode

    1. Text = Chr(64)
    Hi
    Also ehrlich gesagt geht mir die Inkompetenz ehrlich auf den Keks. Wenn man nicht weiß, was man tut oder einfach nur ins blaue rät, sollte man einfach mal die Klappe halten und nicht irgendeinen Müll daherlabern (Sorry, mich nervt das einfach so wahnsinnig). Ich mein, ich kann auch nicht behaupten, dass die Welt eine Scheibe ist, nur weil ich mir grad' mal einbild, dass es so sein könnte und ich aber keinen Plan von der Realität habe!
    And ist ein Operator, der bei den primitiven Datentypen so ausgeführt ist, dass die einzelnen Bits mit und verknüpft werden. Hierbei läuft das so ab:
    Für alle Bits der Ganzzahl wird folgende Operation ausgeführt:
    And 0 1
    0 | 0 0
    1 | 0 1

    Also:

    VB.NET-Quellcode

    1. Dim links As Integer = &H1234 '0x1234 = 4 + 3*16 + 2* 256+1 * 4096 = 4660 = 0b 1 0010 0011 0100
    2. Dim rechts As Integer = &HF080 '0xF080 = 8 * 16 + 15 * 4096 = 61568= 0b 1111 0000 1000 0000
    3. Dim verknuepft = links And rechts ' 1 0000 0000 0000 = 4096 = &H1000

    Das heißt, man geht einfach alle Bits der Ganzzahl durch und wendet die Konjunktion ("und") auf das i-te Bit der linken und rechten Ganzzahl an. Das heißt, das i-te Bit des Resultats ist nur dann True, wenn sowohl das i-te Bit der linken, als auch der rechten Ganzzahl True ist.
    Wie man leicht sieht, hat das "und" nichts mit der Sprache zu tun - ist ja klar! Woher soll Contains wissen, dass sein Parameter links And rechts ist und dass damit überprüft werden soll, ob beides enthalten wird. Contains erhält nur den Wert, der im Parameter erzeugt wird! Also wird erst das, was als Parameter übergeben wird, berechnet und anschließend dem Contains übergeben!

    VB.NET-Quellcode

    1. Dim Text As String
    2. Text = Chr(64)
    3. TextBox2.Text.Contains(text And ".")

    Gehen wir den Code doch mal durch. Erst legen wir einen Variable Text vom Typ String an. Danach weißen wir dem Text Chr(64) zu, was gleichbedeutend zu "@"c ist. Nun ja, Chr(64) ist ein Char, Text ein String, aber ok. Bei TextBox2.Text.Contains(text And ".") wird dann versucht, eine logische Verknüpfung zwischen zwei Strings zu erstellen. Funktioniert natürlich nicht, hab ich schon erklärt, nur, was ist der Unterschied zu dem TextBox2.Text.Contains("@" And ".")? "@" ist genauso ein String, wie Text!

    Es gibt übrigens beim CType-Operator sowas wie Narrowing und Widening. Narrowing heißt, man benötigt das CType, Widening eben, dass man es nicht benötigt. Beispiel:

    VB.NET-Quellcode

    1. Dim chr() As Char = New Char(){"a"c, "b"c}
    2. Dim str As String = chr

    Sollte funktionieren, obwohl ein String kein Char-Array ist. Selbiges bei Integer->Single, aber NICHT bei Single->Integer. Integer hat einen unendlich kleineren Werte-Bereich, als Single, auch wenn die Kardinalität der Wertemenge von Singles der der Integer entspricht (haben ja beide 32 Bit, Integer ghet von -2^31 bis 2^31 -1, Single von -unendlich bis unendlich, wobei halt bei Werten > 2^8 -1 bzw. < -2^8 -1 ein Genauigkeitsverlust eintreten kann - wenn ich grad nicht falsch gedacht hab).

    Gruß
    ~blaze~
    Ok und wer hat hier die "Fachliche Kompetenz" DU? Abeitest du jeden Tag am PC an Visual Basic hast du ein Beruf oder wie?
    Wir alle wollen nur helfen der eine kann es besser der andere nicht und wenn man mal falsch liegt dann kann jemand anderes es einem sagen.

    GMT schrieb:

    wer hat hier die "Fachliche Kompetenz"

    Pauschal erstmal jeder, der LESEN kann. Da einige das entweder nicht können - oder wieder besseres Wissen einfach nicht tun - bleiben die übrig, die es können und tun.
    Wie bereits ausgeführt wurde, handelt es sich um einen grundlegenden Denkfehler und jeder mit "Fachkompetenz" erkennt diesen sofort. Allen anderen, die "probier mal" rufen möchten, sei nahegelegt, das Ganze erstmal bei sich zu testen, bevor sie eine falsche Lösung anbieten. Das hat den ungeheuren Vorteil, dass das Forum nicht mehr so viel mit absolutem Nonsens zugequarkt wird und irgendwann einmal (die Hoffnung stirbt halt zuletzt) als WIRKLICH hilfreiche Quelle Einzug in den Olymp des Internet hält.

    Wie üblich: IMHO, YMMV und JM2C

    BTW:

    Wir alle wollen nur helfen

    Jemandem der seinen Autoschlüssel verloren hat, würdest du aber nicht pauschal erstmal die Scheibe einschlagen oder? Ggf würdest du doch auf den Schlüsseldienst warten und nur wenn du selbst schlüsseldiensttechnische Kenntnisse hast, würdest du selbst Hand anlegen?

    GMT schrieb:

    ...und wenn man mal falsch liegt dann kann jemand anderes es einem sagen.
    also dass

    VB.NET-Quellcode

    1. TextBox2.Text.Contains(text And ".")
    falsch ist, muss dir keiner sagen, dass sagt dir der Compiler.

    Aber - was blaze vmtl. auf die Nerven geht - das weiß man sogar ohne Compiler, wenn man weiß, was ein String ist, und wozu der And-Operator gut ist.
    Wenn einem aber der And-Operator nicht weiter bekannt ist, dann sollteman auch keine code-Beispiele damit posten, weil damit bringt man nur den TE völlig durcheinander.