Jump to content

Not returning after reading in INI file


MattX
 Share

Recommended Posts

My goal is to read the ini file in so if the computer / server name is in the list then it will simply pop it up in the msg box - problem is it's not working - I've obviously done something wrong here !!

The .ini file looks like this.

[servers]
server1=aaa-srv1
server2=bbb-srv1
server3=ccc-srv5
server4=ddd-srv2
server5=eee-srv1
server6=ggg-srv5
server7=kkk-srv1
server8=ppp-srv2
server9=zzz-srv3
server10=xxx-srv1
server11=mmm-srv1

The code:

$cname = @ComputerName
$ip = @IPAddress1
$user = @UserName

$name = IniReadSection(@ScriptDir & "\server_list.ini", "servers")
If @error Then
    MsgBox(4096, "", "Error occurred,  probably no INI file.")
Else
    For $i = 1 To $name[0][0]
        ;MsgBox(4096, "", $name[$i])
    Next
EndIf

If $cname = $name Then
    MsgBox(4096, "", $name[$i])
    EndIf

 

Would appreciated a pointer where I've gone wrong.

Link to comment
Share on other sites

$name is a 2D array, you can't compare $cname to $name in the way you're doing it. Also, the $name array isn't being referenced as a 2D array in your msgbox functions. it would be $name[x][y], not $name[x] as you have it.

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

$name is a 2D array, you can't compare $cname to $name in the way you're doing it. Also, the $name array isn't being referenced as a 2D array in your msgbox functions. it would be $name[x][y], not $name[x] as you have it.

 

So if I can't compare it using that how do I ?

I thought you had to read the whole .ini in first. I tried using the IniReadSectionNames function but had the same issue.

Link to comment
Share on other sites

Search the Forum for a function called _ArrayDiff().

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

Search the Forum for a function called _ArrayDiff().

Thanks for the responce however, I don't want to compare Arrays. All I want is for the script to read an .ini file which has a load of names in of servers and computers. If the script is run on one of those then I simply want it to exit. In order for this to happen does the list of devices need to be in an Array then ?

Link to comment
Share on other sites

You can loop through the array, but you have to access them correctly. This wiki article might help if you're unfamiliar with arrays.

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

MattX,

There is alos a logic/organization problem with your code...let's fast forward to an example you can work on...read the comments in the code,...

$cname = @ComputerName
$ip = @IPAddress1
$user = @UserName

$name = IniReadSection(@ScriptDir & "\testini.ini", "servers")
If @error Then
    MsgBox(4096, "", "Error occurred,  probably no INI file.")
Else
    For $i = 1 To $name[0][0]
        
        ; dump the key/value pairs to the console...note the way they are addressed..
        ConsoleWrite('key   = ' & $name[$i][0] & @LF)
        ConsoleWrite('value = ' & $name[$i][1] & @LF)

        ; this need to be inside of the for..next loop for your use of the $i (increment) variable to make sense...
        if $name[$i][1] = $cname then
            ConsoleWrite('found PC = ' & $cname & @LF)
        endif

    Next
EndIf

kylomas

edit:  If you do NOT understand the array handling then please do as BrewmanNH has advised...

Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...