nerdgerl Posted September 25, 2007 Posted September 25, 2007 (edited) Okay, I made this some time ago and forgot how I did it honestly. Surely there's some borrowed code in there somewhere, but essentially the program lets you make and use your own Encyclopedia/Dictionary. It uses two text files: 1 text file stores the terms and the other stores their corresponding meanings. The line positions of the terms and meanings must match or the things that you look up won't make sense. I built this because I wanted to use my Palm's Encyclopedia Britannica on my desktop. The data file was huge and I was worried that AutoIT would never sift though all of it. I was silly enough to try this with an ini file, but there's an apparent limit of entries that I wasn't aware of. So I converted the encyclopedia to text and separated the entries (terms) from their descriptions (meanings) and put them into two separate files. Someone else's code gave me the idea to try it this way and it worked! The large file size doesn't seem to bother AutoIt, as it's pretty damn fast -- the descriptions (meanings) file I use is 16.3MB. So anyway, I'm not even about to upload the encyclopedia but I put some functions in there that will let you add your own stuff. Of course you could always try it with a tiny dictionary. Click SAVE to save changes to an entry (term) - click ADD to add one. The back/forward navigation functions are weak - but kind of interesting once you get some massive data in there. That is, interesting in the way that you get what you didn't really ask for.CODE;Sources:#include <GUIConstants.au3>#include <file.au3>#include <Array.au3>#include <GuiEdit.au3>Dim $Pos = 0$Form = GUICreate("My Encyclopedia", 462, 386, -1, -1)GUICtrlCreateLabel("Find:", 6, 10, 27, 17)GUICtrlSetFont(-1, 9, 800, "", "Arial")$Input = GUICtrlCreateInput("", 34, 7, 336, 21)GUICtrlSetFont(-1, 9, 800, "", "Arial")$Search = GUICtrlCreateButton("Search", 380, 7, 75, 23, $BS_DEFPUSHBUTTON)GUICtrlSetFont(-1, 9, 800, "", "Arial")$Edit = GUICtrlCreateEdit("", 6, 36, 448, 325, $ES_AUTOVSCROLL + $WS_VSCROLL)GUICtrlSetFont(-1, 12, 400, "", "Arial");MENUBAR$filemenu = GUICtrlCreateMenu("&File")$filesave = GUICtrlCreateMenuitem("&Save Entry", $filemenu)$fileadd = GUICtrlCreateMenuitem("&Add Entry", $filemenu)$fileexit = GUICtrlCreateMenuitem("&Exit", $filemenu)$navmenu = GUICtrlCreateMenu("&Navigate")$Back = GUICtrlCreateMenuitem("&Back", $navmenu)$Forward = GUICtrlCreateMenuitem("&Foward", $navmenu)GUISetState(@SW_SHOW);Readin terms ahead of timeIf FileExists("meanings.txt") Then;Do nothingElse FileWrite("meanings.txt","meaning")EndIfIf FileExists("terms.txt") Then;Do nothingElse FileWrite("terms.txt","term")EndIfDim $aRecordsIf Not _FileReadToArray("terms.txt", $aRecords) Then MsgBox(4096, "Error", " Error reading log to Array error:" & @error) ExitEndIfHotKeySet("^f", "GoForward")HotKeySet("^b", "GoBack")While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Or $msg = $fileexit ExitLoop Case $msg = $fileadd ToolTip("Adding Entry...", @DesktopWidth / 2, (@DesktopHeight / 2) - 30, "", "", 2) FileWriteLine("terms.txt", GUICtrlRead($Input) & " ") FileWriteLine("meanings.txt", GUICtrlRead($Edit)) ToolTip("") Case $msg = $filesave ToolTip("Saving Entry...", @DesktopWidth / 2, (@DesktopHeight / 2) - 30, "", "", 2) _ReplaceStringInFile("terms.txt", FileReadLine("terms.txt", $Pos), GUICtrlRead($Input) & " ") _ReplaceStringInFile("meanings.txt", FileReadLine("meanings.txt", $Pos), GUICtrlRead($Edit)) ToolTip("") Case $msg = $Search $sType = '' Local $aSel = _GUICtrlEditGetSel($Edit) If $aSel = -1 Then Return SetError(1, 0, -1) Local $sText = StringMid(GUICtrlRead($Edit), $aSel[1] + 1, ($aSel[2] - $aSel[1])) If $sText = "" Then ToolTip("Searching For Term...", @DesktopWidth / 2, (@DesktopHeight / 2) - 30, "", "", 2) For $x = 1 To $aRecords[0] $Pos = _ArraySearch($aRecords, GUICtrlRead($Input) & " ", 0, 0, 0, True) If $Pos = -1 Then GUICtrlSetData($Edit, "Not Found") GUICtrlSetData($Input, "") ExitLoop Else GUICtrlSetData($Input, FileReadLine("terms.txt", $Pos)) GUICtrlSetData($Edit, FileReadLine("meanings.txt", $Pos)) ExitLoop EndIf Next ToolTip("") Else ToolTip("Searching For Term...", @DesktopWidth / 2, (@DesktopHeight / 2) - 30, "", "", 2) For $x = 1 To $aRecords[0] $Pos = _ArraySearch($aRecords, $sText & " ", 0, 0, 0, True) If $Pos = -1 Then GUICtrlSetData($Edit, "Not Found") GUICtrlSetData($Input, "") ExitLoop Else GUICtrlSetData($Input, FileReadLine("terms.txt", $Pos)) GUICtrlSetData($Edit, FileReadLine("meanings.txt", $Pos)) ExitLoop EndIf Next ToolTip("") EndIf Case $msg = $Back GoBack() Case $msg = $Forward GoForward() EndSelectWEndFunc GoForward() $Pos = $Pos + 1 GUICtrlSetData($Input, FileReadLine("terms.txt", $Pos)) GUICtrlSetData($Edit, FileReadLine("meanings.txt", $Pos))EndFunc ;==>GoForwardFunc GoBack() $Pos = $Pos - 1 GUICtrlSetData($Input, FileReadLine("terms.txt", $Pos)) GUICtrlSetData($Edit, FileReadLine("meanings.txt", $Pos))EndFunc ;==>GoBackOh I forgot. If you highlight a word in the bottom window - and then click the search button - the program will attempt to find it in the terms and meanings files. Gotta be careful with highlighting though. This particular function doesn't remove highlighted spaces or punctuation (yet). Edited September 25, 2007 by nerdgerl My AutoIT's:[topic="53958"]Personal Encyclopedia/Dictionary[/topic][topic="46311"]MS Access (Style) Database[/topic]"Some people are born on third base and go through life thinking they hit a triple."
gseller Posted September 25, 2007 Posted September 25, 2007 I tried a couple terms, seems to work pretty well. Thanks for sharing. Didn't see any bugs so far and I am using windows XP SP2. Edit:Sorry Typo
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