Sign in to follow this  
Followers 0
Thimotty

What am i doing wrong?

13 posts in this topic

#include <Array.au3>
global $arr[2][2]
$arr[0]['x'] = 11
$arr[0]['y'] = 22
$arr[1]['x'] = 33
$arr[1]['y'] = 44

displayArray($arr)

Func displayArray($array)
   For $i = 0 to UBound($array, 1) - 1
         MsgBox(0,"AutoIt",$array[$i]['x'])
         MsgBox(0,"AutoIt",$array[$i]['y'])
   Next
EndFunc

I expect 4 boxes with text 11...22...33...44

instead i get 22...22...44...44

What am i doing wrong?

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Use only numbers as array index, not strings.

AutoIt probably does implicit conversion from 'X' and 'y' to number which is probably the same (zero or non-zero number).

Edited by Zedna

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

If you need strings as indexes then use Scripting.Dictionary (object) or new AutoIt's syntax of Maps (not arrays) which I'm not familiar with ... but details are in the helpfile.

Edited by Zedna

Share this post


Link to post
Share on other sites

Thank you Zedna, you are correct. I've replaced 'x','y' with '1x','2y' and it worked. Thank you very much.

It is very strange to me that autoit does not have associative arrays, deep arrays and foreach function.

Share this post


Link to post
Share on other sites

and...?

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

ahh

Actually nope! I won't :)

It does not say anything about associative arrays. I have naturally assumed a high level lang should be able to handle string keys and it didn't even cross my mind that "index numbers" should be taken literally :)

It does speak of multidimentional arrays but does not mention they are actually matrix and not array or arrays like the other langs. I can store matrix data only in matrix values and can't use the keys the same way. I wouldn't know that if i haven't read it in the forums here.

The "UBound" workaround of foreach is not actual replacement :)

Here is an example:

I have incoming a simple text file with unknown count of x,y coordinates which i want to load and use. For example in perl my original script from this thread would look like this:

$arr{11}=22;
$arr{33}=44;
...

foreach $key (keys %arr) {
   print "X->" . $key . " ,Y-> " . $arr{$key};
}

In PHP it would be even simpler :)

Try to write it in autoit and you'll see what i mean and why i got confused :)

And i don't even want to think how complex the definition will get if i have z coord too :)

Edited by Thimotty

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

PHP has it's problems as well. Also it's an array, AutoIt has never pretended that it's anything but that.

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

.

The "UBound" workaround of foreach is not actual replacement :)

You really should read the help file, even though I know you won't.

Local $aArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
For $iNum In $aArray
    ConsoleWrite($iNum & @CRLF)
Next

4 posts in and you're already exhibiting the attitude of someone who won't last very long around here. I like to think people can change, but given the way you conversed with Zedna, when they provided clear help and advice, shows me your lack of respect to those who know more about the language (AutoIt) than you.


_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

No, guinness, probably i won't.

I did thank Zedna properly, i think.

When i share s simple thought that something is strange for me to be send to "go RTFM" or "google it" is considered kinda rude.

When i try to explain what and why did confused me to be told that i am "exhibiting the attitude" and I "won't last very long around here" is absolutely rude.

Yes i know they are called hashes in perl and php has it's problems but they still are (or can be used as) arrays of arrays.

Please, old dog, do not assume that someone has not read the manual, especialy when same one explains what confused him in the manual :)

I am sorry if you or anyone else feel that my posts are offensive, when they are not! Your attitude (and very likely what follows) will drive me away.

Best regards and take it easy!

1 person likes this

Share this post


Link to post
Share on other sites

#12 ·  Posted (edited)

Asking very basic questions can be considered rude too.

I was going to tell you about FOR IN LOOP but guinness was faster.

As he said you don't read helpfile well else you couldn't write that AutoIt can't handle this/that ... for example arrays in arrays are posiible too.

EDIT: You also posted in wrong section of this forum and you used absolutely wrong titile of topic :-(

Edited by Zedna

Share this post


Link to post
Share on other sites

#13 ·  Posted (edited)

Yes they are possible but you can't use them unless you get tem out of the array into another variable.

Anyway

Please accept my apologies for beeg rude and asking so basic question. Thank you again for your kind help!

Edit: Yes i apologize for that too. Asking programing question in developers chat was really rude. Please don't be too mad at me!

Edited by Thimotty

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