Cdma1X Posted October 7, 2008 Share Posted October 7, 2008 any faster way to read *.ini files. i have a ini file with 10,00,00 lines. how to read it fast? my ini file have no section only some paths like C:\Dir1\Dir2\Dir4\Audio\Song.MP3 D:\Videos\YouTube\Old\Love.FLV E:\Software\AutoIt\Setup.EXE F:\Themes\NewThemes\Vista\AeroGlass.THM ;and so on........ how can i read it faster? Thankss. Link to comment Share on other sites More sharing options...
Marlo Posted October 7, 2008 Share Posted October 7, 2008 use Fileopen and FileRead? Click here for the best AutoIt help possible.Currently Working on: Autoit RAT Link to comment Share on other sites More sharing options...
Cdma1X Posted October 7, 2008 Author Share Posted October 7, 2008 i could not understand, can you please explain more? Link to comment Share on other sites More sharing options...
PsaltyDS Posted October 7, 2008 Share Posted October 7, 2008 i could not understand, can you please explain more?FileOpen() is for opening files. Read the help file on FileOpen().FileRead() is for reading files (perhaps after opening them with FileOpen). Read the help file on FileRead().To read larger parts of the INI file you might try IniReadSection(), providing no individual section is more than 32K. Read the help file on IniReadSection().Win16 compatibility had limited AutoIt's ability to use large INI files. There has bee talk of removing Win16 backward compatibility (Pre-WinNT: Win98 and Win95) so that may change, providing you are not using those older OS versions. This limitation only applied to INI files, and not regular file read/write operations. Read the comments and change logs in the help file.Also, read your help file. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
Cdma1X Posted October 8, 2008 Author Share Posted October 8, 2008 To read larger parts of the INI file you might try IniReadSection(), providing no individual section is more than 32K. Read the help file on IniReadSection().my file have no section and i am using a text (*.txt) file instead of ini (*.ini) files because ini file have limitations but txt file have not.anyways... i know how to read these files but i need a fast way to do it. a code which can read the file very fast or at least better then reading it direct (Default).Thankss. Link to comment Share on other sites More sharing options...
cherdeg Posted October 8, 2008 Share Posted October 8, 2008 my file have no section and i am using a text (*.txt) file instead of ini (*.ini)If it is a text file it is not an ini file. An ini file has at least one section. Explain what you want to do (what is your goal?) and somebody will help you out 1st reading and 2nd parsing your text file. Link to comment Share on other sites More sharing options...
Cdma1X Posted October 8, 2008 Author Share Posted October 8, 2008 i have a application which reads the text file. there are some paths stored in the text file for images,songs,videos,applications,etc like C:\Dir1\Dir2\Dir4\Audio\Song.MP3 D:\Videos\YouTube\Old\Love.FLV E:\Software\AutoIt\Setup.EXE F:\Themes\NewThemes\Vista\AeroGlass.THM ;and so on........ my application reads the file and tells if this file is already opened or not. on first time opening a file my application writes the path of file to the text file and then reads it to show if it is already opened or if this is it's first start. but the text file have many paths stored in it, and when application reads it takes some time to read the whole file for paths. i need something which can read the file very fast. any faster way to read *.txt files. i have a text file with 10,00,00 lines. how to read it fast? my text file is like ini files but it have no section. Link to comment Share on other sites More sharing options...
cherdeg Posted October 8, 2008 Share Posted October 8, 2008 i have a application which reads the text file. there are some paths stored in the text file for images,songs,videos,applications,etc like C:\Dir1\Dir2\Dir4\Audio\Song.MP3 D:\Videos\YouTube\Old\Love.FLV E:\Software\AutoIt\Setup.EXE F:\Themes\NewThemes\Vista\AeroGlass.THM ;and so on........ my application reads the file and tells if this file is already opened or not. on first time opening a file my application writes the path of file to the text file and then reads it to show if it is already opened or if this is it's first start. but the text file have many paths stored in it, and when application reads it takes some time to read the whole file for paths. i need something which can read the file very fast. Okay...so what about "_FileReadToArray"? This function, you btw. need to include <file.au3>, reads every line of a text file into an array. After that you could check for open files using the elements of the array. Link to comment Share on other sites More sharing options...
Marlo Posted October 8, 2008 Share Posted October 8, 2008 Maybe instead of just directly storing the values to a ini file without any order you arrange them into alphabetical order? You could do this by adding sections to your ini file (A, B, C, D, E, etc...) Then add the lines to the sections via either their Drive letter or the folder? Will make it much quicker if you sort of the file instead of just adding them higguldy pigguldy. Click here for the best AutoIt help possible.Currently Working on: Autoit RAT Link to comment Share on other sites More sharing options...
Bowmore Posted October 8, 2008 Share Posted October 8, 2008 From what I understand of your requirements it would be better to use a dictionary object if you have a large number of items in your list to check. This has the advantage of taking an almost constant time to find the item no matter how many items are in the list. There is a little bit of overhead associated with each lookup so if you only have a few items then your current method will be slightly faster, but for larger numbers of items the dictionary object will be much faster. Modify this snippet of code to suite your needs. Global $g_oFilesOpendDic = ObjCreate("Scripting.Dictionary") Func FileOpend($sFileName_In) Local $sFieldName = '' If $g_oFilesOpendDic.Exists($sFileName_In) Then Return True ; file is in list Else ;Add file to list $g_oFieldMapDic.Add($sFileName_In, $sFileName_In) Return False ; File was not in list EndIf Func "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning."- Rick Cook Link to comment Share on other sites More sharing options...
Cdma1X Posted October 8, 2008 Author Share Posted October 8, 2008 Thanks Bowmore 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