KRQ Posted July 7, 2009 Share Posted July 7, 2009 (edited) Hi, I have a list of words in txt file (one per line), and i want to randomly select once from them and put into a inputbox. Edited July 7, 2009 by KRQ Link to comment Share on other sites More sharing options...
water Posted July 7, 2009 Share Posted July 7, 2009 Use the function random. You can set a min and max value. So if you have 50 words you could use: Random(1,50) My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
lordicast Posted July 7, 2009 Share Posted July 7, 2009 (edited) Like, $file = FileOpen("50 Lined.txt", 0) If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf $50line = FileReadLine($file,Random(1,50,1)); $var to be displayed FileClose($file) InputBox('Variable','Your Result',$50Line) Edited July 7, 2009 by lordicast [Cheeky]Comment[/Cheeky] Link to comment Share on other sites More sharing options...
KRQ Posted July 8, 2009 Author Share Posted July 8, 2009 Like, $file = FileOpen("50 Lined.txt", 0) If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf $50line = FileReadLine($file,Random(1,50,1)); $var to be displayed FileClose($file) InputBox('Variable','Your Result',$50Line) Thanks, nice. But this select one word when script is started. I have: Send($50Line) Send("{ENTER}") And this is repeat in my script. Now script choose one random word and entered every times. Link to comment Share on other sites More sharing options...
martin Posted July 8, 2009 Share Posted July 8, 2009 (edited) Thanks, nice. But this select one word when script is started. I have: Send($50Line) Send("{ENTER}") And this is repeat in my script. Now script choose one random word and entered every times. You really have to try harder than that See how the example you were given works and apply it to what you want. Instead of just sending the line get another random line and send that. You could also consider _FileReadtoArray but probably not yet. Edited July 8, 2009 by martin Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
KRQ Posted July 8, 2009 Author Share Posted July 8, 2009 (edited) I'm just a beginer in AutoIT This is my actual script, is not working properly. Main file: expandcollapse popup#include <losowanie.au3> $razy = 0 Do Sleep(6000) MouseClick("left", 312, 217, 1) Send("^a") Send($losowa_fraza) Send("{ENTER}") Sleep(6000) MouseClick("left", 577, 489, 1) Sleep(2000) MouseClick("left", 575, 589, 1) Sleep(4000) MouseClick("left", 312, 217, 1) Send("^a") Sleep(1000) Send($losowa_fraza) Send("{ENTER}") Sleep(1000) MouseClick("left", 577, 489, 1) Sleep(2000) MouseClick("left", 575, 589, 1) Until $razy = 1 losowanie.au3: $plik = FileOpen("Frazy.txt", 0) If $plik = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf $losowa_fraza = FileReadLine($plik,Random(1,10,1)); $var to be displayed FileClose($plik) In txt file, i have a 10 words, 1 per line. I want to random select 1 word from that 10 and entered them to the field. Now, script is entered each time the same word. Edited July 8, 2009 by KRQ Link to comment Share on other sites More sharing options...
KRQ Posted July 8, 2009 Author Share Posted July 8, 2009 OK. Prolbem is resolved. Close pls. Link to comment Share on other sites More sharing options...
MadDogVachon Posted July 24, 2009 Share Posted July 24, 2009 OK. Prolbem is resolved. Close pls.I'm looking for making un script like your's. Can you post your code, please.Thank you! Mad Dog (Maurice) Vachon, a great Canadian professional wrestler! Link to comment Share on other sites More sharing options...
MadDogVachon Posted July 25, 2009 Share Posted July 25, 2009 Here is my script. It works with the txt file "Pensées.txt" in the same folder of Pensées.au3. Pensées.au3 Dim Const $nbligne = 10, $pausedepart = 3000, $pauselect = 5000, $laps = (15*60000), $finboucle = 10 Dim $compteurboucle = 0 Local $Ouvrefichier, $Lignealeatoire $Ouvrefichier = FileOpen("Pensées.txt", 0) If $Ouvrefichier = -1 Then MsgBox(0, "Erreur", "Impossibilité d'ouvrir le fichier 'Pensées.txt'.") Exit EndIf Sleep($pausedepart) Do texteamontrer () $compteurboucle = $compteurboucle + 1 Sleep($laps) Until $compteurboucle = $finboucle FileClose($Ouvrefichier) Exit Func texteamontrer () $Lignealeatoire = FileReadLine($Ouvrefichier,Random(1,$nbligne,1)) SplashTextOn("Pensées", $Lignealeatoire & @CRLF & "Il est " & @Hour & ":" & @MIN & "." , "400", "200", "-1", "-1", 33, "Times New Roman", "20", "700") Sleep($pauselect) SplashOff() EndFunc Exemple of Pensées.txt Bonjour mon ami! Buongiorno caro mio! Buenos dias amigo! Good morning Dude! Et la suite s'en vient Fais comme tu peux, advienne que pourra Dépêche-toi à partir si tu veux arriver Pourquoi faire aujourd'hui ce que tu peux faire demain! Ne remets pas à demain ce que tu peux faire aujourd'hui Héhéhéhéhéhéhéhéhé! Mad Dog (Maurice) Vachon, a great Canadian professional wrestler! Link to comment Share on other sites More sharing options...
MadDogVachon Posted July 26, 2009 Share Posted July 26, 2009 Here is my new version. It's written for french users, but that works well all the same. expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.0.0 Author: MadDogVachon Script Function: Show some "pensée" from a txt file Script version: 1.1 #ce ---------------------------------------------------------------------------- #NoTrayIcon $file = "Pensées.txt" ; Vérification of file existence and number of "pensées" $filehandle = FileOpen($file, 0) If $filehandle = -1 Then $number_of_pensees = 0 Else $how_many_lines = 0 Do $how_many_lines = $how_many_lines + 1 $number_of_pensees = $how_many_lines $how_many_linetest = FileReadLine($filehandle, $how_many_lines) Until @error = -1 $number_of_pensees = $number_of_pensees - 1 EndIf If $number_of_pensees = 0 Then MsgBox(16, "Erreur", "Impossibilité d'ouvrir le fichier " & $file & ".") Exit EndIf ; Takes the time of reading, the automatic time of presentation and how many random "pensées" to show ; Maybe I will change with a dialog box with GUICtrlCreateUpdown. But it's not for now! $title = "Petite pensée du moment" $pausestart = 0 Do $readingpause = getnumfunc($title, "Inscrivez la durée en seconde de la pause automatique pour lire une pensée." & @CRLF & @CRLF & " - Minimum de 10 secondes -", "10") If ($readingpause > 0 And $readingpause < 10) Then MsgBox(0, $title, "Il faut une durée égale ou supérieure à 10.", 10) EndIf Until $readingpause > 9 $pause_between_pensees = getnumfunc($title, "Inscrivez la durée en minute du délais entre chaque pensée.", "0") $pause_between_pensees = $pause_between_pensees * 60000 $end_of_loop = getnumfunc($title, "Inscrivez le nombre total de pensées à afficher aléatoirement." & @CRLF & @CRLF & "Pour avoir un nombre illimité, inscrivez '0'.", "0") ; Presentation of "pensées" Sleep($pausestart) $count_loop = 0 $different_pensee1 = 0 $different_pensee2 = 0 $different_pensee3 = 0 $different_pensee4 = 0 Do ; Count of pensées $count_loop = $count_loop + 1 ; Random selection of "pensée" but not the four last one Do $random_pensees = Random(1, $number_of_pensees, 1) Until ($random_pensees <> $different_pensee1 And $random_pensees <> $different_pensee2 And $random_pensees <> $different_pensee3 And $random_pensees <> $different_pensee4) $different_pensee4 = $different_pensee3 $different_pensee3 = $different_pensee2 $different_pensee2 = $different_pensee1 $different_pensee1 = $random_pensees $linetext = FileReadLine($filehandle, $random_pensees) ; Show the "pensée" in a dialog box $show_pensee = MsgBox(262145, $title, "Pensée #" & $random_pensees & @CRLF & @CRLF & $linetext & @CRLF & @CRLF & "Il est " & @HOUR & ":" & @MIN & ".", $readingpause) If $show_pensee = 2 Then MsgBox(0, "Petite pensée du moment", "Arrêt du programme.", 10) Exit EndIf ; ; Old way to show the "Pensée" - That way don't show all the line if it's to long ; SplashTextOn($title, "Pensée #" & $random_pensees & @CRLF &$linetext & @CRLF & "Il est " & @Hour & ":" & @MIN & "." , "400", "200", "-1", "-1", 33, "Times New Roman", "20", "700") ; Sleep($readingpause * 1000) ; SplashOff() ; Pause beteween "pensées" Sleep($pause_between_pensees) Until $count_loop = $end_of_loop FileClose($filehandle) Exit ; Function Func getnumfunc($1, $2, $3) ; Conversion function of number Local $getnum Do ; Get the numnber wiht the possibility of cancelling ; $getnum = InputBox($1, $2, "0", "", 350, 150, 350, 350, 15) ; With a delay $getnum = InputBox($1, $2, $3) If @error = 1 Then MsgBox(0, $1, "Vous avez annulé la demande," & @CRLF & "le programme est arrêté.") Exit ElseIf @error = 2 Then MsgBox(0, $1, "Réponse trop lente," & @CRLF & "le programme est arrêté.") Exit EndIf ; ; Old way of conversion because the first time I used 'Number()' it didn't work at all ; Local $testnum, $icount_num, $nummax ; $nummax = 5000 ; $icount_num = 0 ; Do ; $testnum = "" & $icount_num ; If $testnum = $getnum Then ; $getnum = $icount_num ; ExitLoop ; EndIf ; $icount_num = $icount_num + 1 ; Until $icount_num = $nummax ; ; ; Verification of existence of number and if not to big ; $verification = IsNumber($getnum) ; If $verification = 0 Then ; MsgBox(0, $1, "Votre chiffre dépasse " & $nummax & " ou qu'il n'a pas été bien inscrit." & @CRLF & @CRLF & "Veuillez recommencez.") ; EndIf ; Conversion and verification $getnum = Number($getnum) $verification = IsNumber($getnum) If $verification = 0 Then MsgBox(0, $1, "Votre chiffre n'est pas bon." & @CRLF & @CRLF & "Veuillez recommencez.") EndIf Until $verification = 1 Return $getnum EndFunc ;==>getnumfunc Mad Dog (Maurice) Vachon, a great Canadian professional wrestler! 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