Jump to content

How can I get all keys of a hashtable ?


Pat
 Share

Recommended Posts

Hello,

I need associative arrays like in PHP or Perl. As a solution I found code like the lines below:

$hash = ObjCreate("System.Collections.Hashtable")
  $hash.add ("key1", "val1")
  $hash.add ("key2", "val2")

  ; Getting the number of elements in my hash table works
  $count = $hash.Count
  ConsoleWrite("count = " & $count & @CRLF)    

  ; Getting the number of elements in my hash table works
  $keys = $hash.Keys
  ConsoleWrite("keys = " & _ArrayToString($keys) & @CRLF)

In another posting Topic 106907 I found a solution based on ObjCreate("Scripting.Dictionary"). Here you can get all keys using the keys property:

Func _DictKeys($oDict)
    If Not IsObj($oDict) Then Return SetError(1, 0, False)
    Return $oDict.keys
  EndFunc

Does anybody know how to do this with .net hashtables? I've tried to use something like

$enum = $hash.GetEnumerator()
  ...
  loop using $enum.MoveNext()

but it does not work. I'm not sure if autoit can use the object of type "System.Collections.IDictionaryEnumerator" which is returned by GetEnumerator.

Thanks a lot in advance, Pat

Link to comment
Share on other sites

using .NET-COM-Objects in AutoIt has some limitations. You found one :mellow:

You should use Scripting.Dictionary instead.

Edited by ProgAndy

*GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes

Link to comment
Share on other sites

  • Moderators

Pat,

Or you could use Nutster's Associative Array UDF from here.

I use it in preference to the Scripting.Dictionary tool as it does not require any pre-installed libraries (although to be honest it must be pretty hard to find a machine without them nowadays :mellow:).

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...