xPloit Posted September 20, 2010 Share Posted September 20, 2010 (edited) I am trying to make a basic chat responder since I'm bored and have nothing else to do, lol. There is 1 input box and 1 button. When you click the button, it reads the box and based on what you typed, it gives a reply. simple. However, I didn't want to make multiple lines of code that lead to the same msgbox response. If GUICtrlRead($Me) = "Hello" Then MsgBox(blah) ElseIf GUICtrlRead($Me) = "hello" Then MsgBox(blah) ElseIf GUICtrlRead($Me) = "hellO" Then MsgBox(blah) Is there any way to do something that doesn't count caps? That would save alot of time and space... Edited September 20, 2010 by xPloit 00101101011110000101000001101100011011110110100101110100 Link to comment Share on other sites More sharing options...
seandisanti Posted September 20, 2010 Share Posted September 20, 2010 (edited) Select...Case ***edit*** oops, guess i should have read the whole post, my bad, i just saw the stacked elseif's and that was my conditioned response.... StringLower() is the one i'd go with any time you're accepting input and giving someone the chance to screw it up Edited September 20, 2010 by cameronsdad Link to comment Share on other sites More sharing options...
cembry90 Posted September 20, 2010 Share Posted September 20, 2010 I am trying to make a basic chat responder since I'm bored and have nothing else to do, lol. There is 1 input box and 1 button. When you click the button, it reads the box and based on what you typed, it gives a reply. simple. However, I didn't want to make multiple lines of code that lead to the same msgbox response. If GUICtrlRead($Me) = "Hello" Then MsgBox(blah) ElseIf GUICtrlRead($Me) = "hello" Then MsgBox(blah) ElseIf GUICtrlRead($Me) = "hellO" Then MsgBox(blah) Is there any way to do something that doesn't count caps? That would save alot of time and space... If StringLower(GUICtrlRead($Me)) = 'hello' Then MsgBox(blah) Better? I don't know what else to tell ya. AutoIt Stuff: UDFs: {Grow} Link to comment Share on other sites More sharing options...
TJHart85 Posted September 20, 2010 Share Posted September 20, 2010 if StringCompare (GUICtrlRead($Me),"hello"))=0 Then MsgBox(blah) Link to comment Share on other sites More sharing options...
Realm Posted September 20, 2010 Share Posted September 20, 2010 Just thought I'd add my 2cents worth If StringInStr(GUICtrlRead($me), "hello",0) Then MsgBox(0,"","Hello to you 2") My Contributions: Unix Timestamp: Calculate Unix time, or seconds since Epoch, accounting for your local timezone and daylight savings time. RegEdit Jumper: A Small & Simple interface based on Yashied's Reg Jumper Function, for searching Hives in your registry. Link to comment Share on other sites More sharing options...
xPloit Posted September 20, 2010 Author Share Posted September 20, 2010 (edited) i like stringlower haha. Thanks for the quick replies! except that doesn't seem to work... Func _Answer() If StringLower(GUICtrlRead($Me)) = "hello" or "hi" or "hey" Then MsgBox(0,"Response","Why hello there!") ElseIf StringLower(GUICtrlRead($Me)) = "how are you" or "how r u" or "how are u" or "how r you" or "how are you?" or "how r u?" or "how are u?" or "how r you?" Then MsgBox(0,"Response","I am doing well thanks!") Else MsgBox(0,"Reply","I was not programmed to respond to that statement") EndIf EndFunc Edited September 20, 2010 by xPloit 00101101011110000101000001101100011011110110100101110100 Link to comment Share on other sites More sharing options...
cembry90 Posted September 20, 2010 Share Posted September 20, 2010 i like stringlower haha. Thanks for the quick replies!Np! I use it all the time on a program I maintain / update. AutoIt Stuff: UDFs: {Grow} Link to comment Share on other sites More sharing options...
xPloit Posted September 20, 2010 Author Share Posted September 20, 2010 maybe you can tell me what's wrong with my code then haha 00101101011110000101000001101100011011110110100101110100 Link to comment Share on other sites More sharing options...
seandisanti Posted September 20, 2010 Share Posted September 20, 2010 (edited) maybe you can tell me what's wrong with my code then haha post it? ***edit*** sorry i didn't see it there. your problem is you're evaluating non boolean expressions. ***edit 2*** perhaps more elaboration... meaning instead of doing it the way you're doing it, you have to either do multiple $val1 = $val2 or $val1 = $val3 ;or etc or you can use an array, OR (and this is my favorite when i have a LOT to check) ;make a blob $IfItsAnyOfThese = "hihelloheyhuhwhatwhosaidthat" ;then evaluate all at once: if StringInStr($IfItsAnyOfThese,$SubString) Then;rest here Edited September 20, 2010 by cameronsdad Link to comment Share on other sites More sharing options...
xPloit Posted September 20, 2010 Author Share Posted September 20, 2010 I'm afraid I dont understand...boolean expressions are 'true' or 'false'If StringLower(GUICtrlRead($Me)) = (is 'true') "hey" or "hello" or "hi" ThenElseIf (if the above isn't 'true')etc. 00101101011110000101000001101100011011110110100101110100 Link to comment Share on other sites More sharing options...
seandisanti Posted September 20, 2010 Share Posted September 20, 2010 I'm afraid I dont understand...boolean expressions are 'true' or 'false'If StringLower(GUICtrlRead($Me)) = (is 'true') "hey" or "hello" or "hi" ThenElseIf (if the above isn't 'true')etc.i realized it might be too vague as soon as i wrote (thinking of your other threads) so i added some explanation Link to comment Share on other sites More sharing options...
xPloit Posted September 20, 2010 Author Share Posted September 20, 2010 (edited) okay, that makes sense except for one part...where does $SubString come from? Obviously that won't work just by typing it into Scite...it's not defined. figured it out... $SubString = GUICtrlRead($Me) Edited September 20, 2010 by xPloit 00101101011110000101000001101100011011110110100101110100 Link to comment Share on other sites More sharing options...
cembry90 Posted September 20, 2010 Share Posted September 20, 2010 (edited) I see what you're wanting to do now. Here's my best shot at it.#include <Array.au3> Dim $Search[3][3] = [ ["hello", "hey", "hi"], _ ["brb", "afk", "bbl"], _ ["bye", "cya", "ttyl"] ] Dim $Respond[3] = ["Why hello there!", "See you soon.", "Goodbye!"] Global $Search, $Respond For $i = 1 To 5 $Me = InputBox("Prompt", "Input a message.") reply(StringLower($Me)) Next Func reply($Message) $Check = _ArraySearch($Search, StringLower($Message)) If Not @error Then MsgBox(262144, "Message", $Respond[$Check]) Else MsgBox(262144, "Message", "I don't know what to say to that.") EndIf EndFuncI think you get what I did:+ A simple 2D array where rows are composed of columns that all represent the same type of message (hello, hey, hi)+ The other array is the respond message for the entire row above.Example: The program will respond "Why hello there!" to "hello", "hey", and "hi" and so forth with the other rows.Edit: Added StringLower() to be passed to the function. Edited September 20, 2010 by cembry90 AutoIt Stuff: UDFs: {Grow} Link to comment Share on other sites More sharing options...
seandisanti Posted September 20, 2010 Share Posted September 20, 2010 yeah, sorry when i take the time to actually write up an example, i use identifiers that clearly communicate their purpose or make me laugh (frequently my exit function is some awful long string incorporating "MakeItStop". i do that for a few reasons, one being that the person i'm trying to teach (not work for) has to understand what i've written and make some attempt to rewrite it to work with their identifiers. sneaky and helpful and funny. that's me Link to comment Share on other sites More sharing options...
GEOSoft Posted September 20, 2010 Share Posted September 20, 2010 (edited) Func _Answer() Local $sQuery = (GUICtrlRead($Me), $sAnswer, $sLast If StringRegExp($sQuery, "(?i)how.+r.+u") Then $sAnswer = "I am doing well thanks!" Else Switch $sQuery Case "hello", "hi", "hey" $sAnswer = "Why hello there!" Case Else $sLast = statement If StringRight($sQuery, 1) = "?" Then $slast = "question" $sAnswer = "I was not programmed to respond to that " & $slast & "." EndSwitch EndIf MsgBox(0,"Reply", $sAnswer) EndFunc The regex will even get lines like "How r u doing?" EDIT: Added the variable $sLast so it will read better if $sQuery is a question. Edited September 20, 2010 by GEOSoft George Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.*** The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number. Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else. "Old age and treachery will always overcome youth and skill!" Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now