2016-10-11 6 views
0

이것은 Microsoft Visual Studio 2015에 있습니다. Visual Basic 코드를 사용하고 있는데 사람이 입력 할 때 이렇게하려고합니다. 이름이 txtPokemonInput 인 경우 실제 이름인지 확인합니다.'System.InvalidCastException'형식의 처리되지 않은 예외가 Microsoft.VisualBasic.dll에서 발생했습니다.

Option Compare Text 
Public Class Form1 
    Private Sub cmdCalculate_Click(sender As Object, e As EventArgs) Handles  
cmdCalculate.Click 
    If txtPokemonInput.Text <> "Abra" Or "Bellsprout" Then 
     MsgBox("Please input an actual Pokemon name.") 
    End If 
End Sub 
End Class 
+0

'어떻게 작동하지 않습니까? '옵션을 엄격히 준수하면 컴파일되지 않습니다. – Plutonix

답변

1

이 :

If txtPokemonInput.Text <> "Abra" Or "Bellsprout" Then 

여기

An unhandled exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll Additional information: Conversion from string "Bellsprout" to type 'Boolean' is not valid.

코드입니다 : 내가 텍스트 상자에 코드를 입력 "아브라"를 실행하면 다음 cmdCalculate을 클릭,이 오류가 발생합니다 당신이하려는 것을하지 않습니다. 실제로 "Abra"및 "Bellsprout"에 대한 논리 OR 연산을 수행 한 다음 부울 결과를 해당 Text 속성과 비교하려고합니다. Strings으로 부울 로직을 수행하면 잘못된 캐스트가 발생합니다. 코드는 당신이 실제로하고 싶은 것은 이것이다 할 수 있습니다 : 그것은 논리적 오히려 논리적 OR 및 단락 AndAlso 운영자가 And 연산자에 우선 사용되는 것보다 A의

If txtPokemonInput.Text <> "Abra" AndAlso txtPokemonInput.Text <> "Bellsprout" Then 

하는 것으로.

프로젝트 속성과 IDE 옵션에서 Option Strict On으로 설정하면 향후 모든 프로젝트의 기본값은 On이됩니다. 그렇게하면 실수를 저지를 수는 없지만 런타임에 잡히지 않고 컴파일 오류로 표시하게됩니다.

+0

감사합니다! 저는 그가 학교에서 가지고있는 Visual Basic 6.0을 사용하는 데 익숙해 져 있습니다. 그래서 익숙해 져야 할 필요가 있습니다. –

+0

@SamValenzuela, 당신은 여전히'VB 6'과 같은 오류가 있습니다. –

0

2 개 이상의 이름에 대해 유효성을 검사한다고 가정합니다. 데이터베이스에 대해 유효성을 검사하는 더 좋은 방법이 있지만 이것이 효과적입니다. 위키피디아에서 만든이 포켓몬 이름 목록을 메모장 ++을 사용하여 배열 문자열로 포맷했습니다.

Private Sub cmdCalculate_Click(sender As Object, e As EventArgs) Handles cmdCalculate.Click 

    ' Trim off any leading or trailing spaces 
    txtPokemonInput.Text = txtPokemonInput.Text.trim 
    ' Call the function and pass the search string. The function returns true if it found the name and false if it did not 
    If ValidatePokemonName(txtPokemonInput.Text) = False Then MsgBox("Please input an actual Pokemon name.") 

End Sub 


Private Function ValidatePokemonName(ByVal CheckName As String) As Boolean 

    CheckName = CheckName.ToLower ' convert the user text to all lower case. This will allow the program to ignore case 

    ' Create an array of valid names 
    Dim ValidNames() As String = {"abomasnow", "abra", "absol", "accelgor", "aegislash", "aerodactyl", "aggron", "aipom", "alakazam", "alomomola", "altaria", "amaura", "ambipom" _ 
            , "amoonguss", "ampharos", "anorith", "arbok", "arcanine", "arceusi", "archen", "archeops", "ariados", "armaldo", "aromatisse", "aron", "articuno" _ 
           , "audino", "aurorus", "avalugg", "axew", "azelf", "azumarill", "azurilln", "bagon", "baltoy", "banette", "barbaracle", "barboach", "basculin", "bastiodon" _ 
           , "bayleef", "beartic", "beautifly", "beedrill", "beheeyem", "beldum", "bellossom", "bellsprout", "bergmite", "bewear", "bibarel", "bidoof", "binacle" _ 
           , "bisharp", "blastoise", "blaziken", "blissey", "blitzle", "boldore", "bonslyp", "bouffalant", "bounsweet", "braixen", "braviary", "breloom", "brionne" _ 
           , "bronzong", "bronzor", "bruxish", "budewp", "buizel", "bulbasaur", "buneary", "bunnelby", "burmy", "butterfree", "cacnea", "cacturne", "camerupt", "carbink" _ 
           , "carnivine", "carracosta", "carvanha", "cascoon", "castform", "caterpie", "celebii", "chandelure", "chansey", "charizard", "charjabug", "charmander", "charmeleon" _ 
           , "chatot", "cherrim", "cherubi", "chesnaught", "chespin", "chikorita", "chimchar", "chimecho", "chinchou", "chinglingp", "cinccino", "clamperl", "clauncher" _ 
           , "clawitzer", "claydol", "clefable", "clefairy", "cleffa", "cloyster", "cobalion", "cofagrigus", "combee", "combusken", "comfey", "conkeldurr", "corphish", "corsola" _ 
           , "cottonee", "crabrawler", "cradily", "cranidos", "crawdaunt", "cresselia", "croagunk", "crobat", "croconaw", "crustle", "cryogonal", "cubchoo", "cubone", "cutiefly" _ 
           , "cyndaquil", "darkraii", "darmanitan", "dartrix", "darumaka", "dedenne", "deerling", "deino", "delcatty", "delibird", "delphox", "deoxyso", "dewgong", "dewott" _ 
           , "dialga", "dianciei", "diggersby", "diglett", "ditto", "dodrio", "doduo", "donphan", "doublade", "dragalge", "dragonair", "dragonite", "drampa", "drapion", "dratini" _ 
           , "drifblim", "drifloon", "drilbur", "drowzee", "druddigon", "ducklett", "dugtrio", "dunsparce", "duosion", "durant", "dusclops", "dusknoir", "duskull", "dustox" _ 
           , "dwebble", "eelektrik", "eelektross", "eevee", "ekans", "electabuzz", "electivire", "electrike", "electrode", "elekid", "elgyem", "emboar", "emolga", "empoleon" _ 
           , "entei", "escavalier", "espeon", "espurr", "excadrill", "exeggcute", "exeggutor", "exploud", "farfetch'd", "fearow", "feebas", "fennekin", "feraligatr", "ferroseed" _ 
           , "ferrothorn", "finneon", "flaaffy", "flabébé", "flareon", "fletchinder", "fletchling", "floatzel", "floette", "florges", "flygon", "fomantis", "foongus", "forretress" _ 
           , "fraxure", "frillish", "froakie", "frogadier", "froslass", "furfrou", "furret", "gabite", "gallade", "galvantula", "garbodor", "garchomp", "gardevoir", "gastly", "gastrodon" _ 
           , "genesecti", "gengar", "geodude", "gible", "gigalith", "girafarig", "giratina", "glaceon", "glalie", "glameow", "gligar", "gliscor", "gloom", "gogoat", "golbat", "goldeen" _ 
           , "golduck", "golem", "golett", "golurk", "goodra", "goomy", "gorebyss", "gothita", "gothitelle", "gothorita", "gourgeist", "granbull", "graveler", "greninja", "grimer" _ 
           , "grotle", "groudon", "grovyle", "growlithe", "grubbin", "grumpig", "gulpin", "gumshoos", "gurdurr", "gyarados", "happinyp", "hariyama", "haunter", "hawlucha", "haxorus" _ 
           , "heatmor", "heatran", "heliolisk", "helioptile", "heracross", "herdier", "hippopotas", "hippowdon", "hitmonchan", "hitmonlee", "hitmontop", "ho-ohk", "honchkrow", "honedge" _ 
           , "hoopai", "hoothoot", "hoppip", "horsea", "houndoom", "houndour", "huntail", "hydreigon", "hypno", "igglybuff", "illumise", "infernape", "inkay", "ivysaur", "jangmo-o" _ 
           , "jellicent", "jigglypuff", "jirachii", "jolteon", "joltik", "jumpluff", "jynx", "kabuto", "kabutops", "kadabra", "kakuna", "kangaskhan", "karrablast", "kecleon", "keldeoi" _ 
           , "kingdra", "kingler", "kirlia", "klang", "klefki", "klink", "klinklang", "koffing", "komala", "krabby", "kricketot", "kricketune", "krokorok", "krookodile", "kyogre", "kyurem" _ 
           , "lairon", "lampent", "landorus", "lanturn", "lapras", "larvesta", "larvitar", "latias", "latios", "leafeon", "leavanny", "ledian", "ledyba", "lickilicky", "lickitung", "liepard" _ 
           , "lileep", "lilligant", "lillipup", "linoone", "litleo", "litten", "litwick", "lombre", "lopunny", "lotad", "loudred", "lucario", "ludicolo", "lugiaj", "lumineon", "lunala" _ 
           , "lunatone", "lurantis", "luvdisc", "luxio", "luxray", "lycanwolf", "machamp", "machoke", "machop", "magby", "magcargo", "magearnav", "magikarp", "magmar", "magmortar" _ 
           , "magnemite", "magneton", "magnezone", "makuhita", "malamar", "mamoswine", "manaphyi", "mandibuzz", "manectric", "mankey", "mantine", "mantykep", "maractus", "mareep" _ 
           , "marill", "marowak", "marshtomp", "masquerain", "mawile", "medicham", "meditite", "meganium", "meloettai", "meowstic", "meowth", "mesprit", "metagross", "metang", "metapod" _ 
           , "mewi", "mewtwo", "mienfoo", "mienshao", "mightyena", "milotic", "miltank", "mime jr.p", "mimikyu", "minccino", "minior", "minun", "misdreavus", "mismagius", "moltres", _ 
            "monferno", "morelull", "mothim", "mr. mime", "mudbray", "mudkip", "mudsdale", "muk", "munchlaxp", "munna", "murkrow", "musharna", "natu", "nidoking", "nidoqueen", "nidoran" _ 
           , "nidoran?", "nidorina", "nidorino", "nincada", "ninetales", "ninjask", "noctowl", "noibat", "noivern", "nosepass", "numel", "nuzleaf", "octillery", "oddish", "omanyte", "omastar" _ 
           , "onix", "oranguru", "oricorio", "oshawott", "pachirisu", "palkia", "palossand", "palpitoad", "pancham", "pangoro", "panpour", "pansage", "pansear", "paras", "parasect" _ 
           , "passimian", "patrat", "pawniard", "pelipper", "persian", "petilil", "phanpy", "phantump", "phioneq", "pichu", "pidgeot", "pidgeotto", "pidgey", "pidove", "pignite", "pikachu" _ 
           , "pikipek", "piloswine", "pineco", "pinsir", "piplup", "plusle", "politoed", "poliwag", "poliwhirl", "poliwrath", "ponyta", "poochyena", "popplio", "porygon", "porygon-z" _ 
           , "porygon", "primeape", "prinplup", "probopass", "psyduck", "pumpkaboo", "pupitar", "purrloin", "purugly", "pyroar", "pyukumuku", "quagsire", "quilava", "quilladin", "qwilfish" _ 
           , "raichu", "raikou", "ralts", "rampardos", "rapidash", "raticate", "rattata", "rayquaza", "regice", "regigigas", "regirock", "registeel", "relicanth", "remoraid", "reshiram" _ 
           , "reuniclus", "rhydon", "rhyhorn", "rhyperior", "riolu", "rockruff", "roggenrola", "roselia", "roserade", "rotom", "rowlet", "rufflet", "sableye", "salamence", "salandit" _ 
           , "samurott", "sandile", "sandshrew", "sandslash", "sandygast", "sawk", "sawsbuck", "scatterbug", "sceptile", "scizor", "scolipede", "scrafty", "scraggy", "scyther", "seadra" _ 
           , "seaking", "sealeo", "seedot", "seel", "seismitoad", "sentret", "serperior", "servine", "seviper", "sewaddle", "sharpedo", "shaymini", "shedinja", "shelgon", "shellder" _ 
           , "shellos", "shelmet", "shieldon", "shiftry", "shinx", "shroomish", "shuckle", "shuppet", "sigilyph", "silcoon", "simipour", "simisage", "simisear", "skarmory", "skiddo" _ 
           , "skiploom", "skitty", "skorupi", "skrelp", "skuntank", "slaking", "slakoth", "sliggoo", "slowbro", "slowking", "slowpoke", "slugma", "slurpuff", "smeargle", "smoochum" _ 
           , "sneasel", "snivy", "snorlax", "snorunt", "snover", "snubbull", "solgaleo", "solosis", "solrock", "spearow", "spewpa", "spheal", "spinarak", "spinda", "spiritomb", "spoink" _ 
           , "spritzee", "squirtle", "stantler", "staraptor", "staravia", "starly", "starmie", "staryu", "steelix", "stoutland", "stufful", "stunfisk", "stunky", "sudowoodo", "suicune" _ 
           , "sunflora", "sunkern", "surskit", "swablu", "swadloon", "swalot", "swampert", "swanna", "swellow", "swinub", "swirlix", "swoobat", "sylveon", "taillow", "talonflame" _ 
           , "tangela", "tangrowth", "tapu koko", "tauros", "teddiursa", "tentacool", "tentacruel", "tepig", "terrakion", "throh", "thundurus", "timburr", "tirtouga", "togedemaru" _ 
           , "togekiss", "togepi", "togetic", "torchic", "torkoal", "tornadus", "torracat", "torterra", "totodile", "toxicroak", "tranquill", "trapinch", "treecko", "trevenant", "tropius" _ 
           , "trubbish", "turtonator", "turtwig", "tympole", "tynamo", "type: null", "typhlosion", "tyranitar", "tyrantrum", "tyrogue", "tyrunt", "umbreon", "unfezant", "unown", "ursaring" _ 
           , "uxie", "vanillish", "vanillite", "vanilluxe", "vaporeon", "venipede", "venomoth", "venonat", "venusaur", "vespiquen", "vibrava", "victinii", "victreebel", "vigoroth", "vikavolt" _ 
           , "vileplume", "virizion", "vivillon", "volbeat", "volcanioni", "volcarona", "voltorb", "vullaby", "vulpix", "wailmer", "wailord", "walrein", "wartortle", "watchog", "weavile" _ 
           , "weedle", "weepinbell", "weezing", "whimsicott", "whirlipede", "whiscash", "whismur", "wigglytuff", "wimpod", "wingull", "wishiwashi", "wobbuffet", "woobat", "wooper", "wormadam" _ 
           , "wurmple", "wynautn", "xatu", "xerneas", "yamask", "yanma", "yanmega", "yungoos", "yveltal", "zangoose", "zapdos", "zebstrika", "zekrom", "zigzagoon", "zoroarku", "zoruat" _ 
           , "zubat", "zweilous", "zygarde"} 

    Dim FoundMatch As Boolean = False ' Create a flag we can set if we find the search string 

    For i As Integer = 0 To ValidNames.Length - 1 ' Step through each name and compare it to the user entry 

     If ValidNames(i) = CheckName Then FoundMatch = True : Exit For 'If it matches set the flag to true and exit the for loop. 

    Next 

    Return FoundMatch ' Return the flag 


End Function 
관련 문제