Sign in to follow this  
Followers 0
Phaser

Array size

6 posts in this topic

Hi Guys

I am checking data with array find all which either gives me -1, nothing found or retunrs an array of how many it finds. I will be getting 1 2 3 or 4 indexes returned, how can I see how many indexes are returned as I only want to work with arrays with 2 or more indexes?

Share this post


Link to post
Share on other sites



Hi Guys

I am checking data with array find all which either gives me -1, nothing found or retunrs an array of how many it finds. I will be getting 1 2 3 or 4 indexes returned, how can I see how many indexes are returned as I only want to work with arrays with 2 or more indexes?

Do a search for UBound in the Help file, and your questions will be answered.

Share this post


Link to post
Share on other sites

Many thanks RagsRevenge, I see in the remarks section it mentions about the number returned being one greater, I know you count arrays from 0 but the number returned is actually 1 if index 0 contains data so am I correct that the below would be the numbers returned by UBound

$array [5] = [39] UBound would return 1

$array [5] = [39,96] UBound would return 2

$array [5] = [39,96,177] UBound would return 3

As this is what its doing for me, there's no problem with that, just want to make sure.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

When you created a small program and tested it, what was the result? If there's still ambiguity, please post your test program so we can see precisely what you're doing with functioning code.

Luck!

Edited by Fubarable

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Many thanks RagsRevenge, I see in the remarks section it mentions about the number returned being one greater, I know you count arrays from 0 but the number returned is actually 1 if index 0 contains data so am I correct that the below would be the numbers returned by UBound

$array [5] = [39] UBound would return 1

$array [5] = [39,96] UBound would return 2

$array [5] = [39,96,177] UBound would return 3

As this is what its doing for me, there's no problem with that, just want to make sure.

You need to work with valid syntax to start with. Write an actual short script you can actually run. What you posted will cause errors and fail miserably.

Perhaps you are confusing AutoIt with another language in the way you tried to call array elements. In AutoIt every dimension declared MUST be specified with an index for EVERY reference.

One Dimensional Array:

Declaring it: Global $array[50]

Setting a value: $array[5] = 1234

Last element: $array[49]

Ubound:

- Ubound($array, 0) returns 1 (there is one dimension)

- Ubound($array) or Ubound($array, 1) returns 50 (there are 50 elements)

Three Dimensional Array:

Declaring it: Global $array[50][35][200]

Setting a value: $array[5][26][177] = 1234

Last element: $array[49][34][199]

Ubound:

- Ubound($array, 0) returns 3 (there are three dimensions)

- Ubound($array) or Ubound($array, 1) returns 50 (there are 50 elements in the first dimension)

- Ubound($array, 2) returns 35 (there are 35 elements in the second dimension)

- Ubound($array, 3) returns 200 (there are 200 elements in the third dimension)

;)

Edit: Typo

Edited by PsaltyDS

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

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

I normally reserve row 0 for adding the number of elements/columns and updating when necessary. I do this because I read that if you have 1000's of elements Ubound can be come very slow!

e.g. 1D Array - $Array[0] = 50 is the vertical number of elements & since it's a single column I don't need to know the number of columns.

e.g. 2D Array - $Array[0][0] = 50 is the vertical number of elements & $Array[0][1] = 3 is the number of columns.

e.g. 3D Array - Not required yet!

Then when I add/delete an array element I update the appropriate integer by using $Array[0] += 1 / $Array[0] -= 1 OR $Array[0][0] += 1 / $Array[0][0] -= 1

For loops are also made easier, because all elements start from 1 upwards and not the illogical 0+.

For $i = 1 To $Array[0][0] ; Same as using Ubound($Array, 1) - 1

ConsoleWrite($Array[$i][0] & @CRLF)

Next

Take a look at StringSplit() to get an idea of how the $Array is returned.

Hope this is clear.

Edited by guinness

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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: 04/09/2015

Share this post


Link to post
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
Sign in to follow this  
Followers 0