Jump to content

Access array data from command output, without a variable?


Javik
 Share

Recommended Posts

Is there some way to directly access array data that is output from a command without storing that data into an array datatype first?

Basically, the command normally outputs data in array format, and I only need a single cell's worth of data from its output, and the rest can be discarded immediately after grabbing what I need.

Normal:

#Include <File.au3>
Local $Foo = _FileListToArray( "C:\" )
ConsoleWrite ($Foo[1] & @CRLF)

Arrayless?

#Include <File.au3>
ConsoleWrite (_FileListToArray( "C:\" )[1] & @CRLF)

Error: Syntax error

Link to comment
Share on other sites

  • Moderators

javik,

No. :)

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

It just looks so.... unoptimized like that, though. :)

; Get user's properties from Active Directory
    Local $ADGOPTmp
    $ADGOPTmp = _AD_GetObjectProperties(@UserName,"givenName")
    Local $FirstName = $ADGOPTmp[1][1]
    $ADGOPTmp = _AD_GetObjectProperties(@UserName,"sn")
    Local $LastName = $ADGOPTmp[1][1]
    $ADGOPTmp = _AD_GetObjectProperties(@UserName,"homedirectory")
    Local $HomePath = $ADGOPTmp[1][1]
    $ADGOPTmp = _AD_GetObjectProperties(@UserName,"profilepath")
    Local $ProfilePath = $ADGOPTmp[1][1]
Link to comment
Share on other sites

  • Moderators

javik,

Arrays are not one of AutoIt's strengths. ;)

But you could always write a small wrapper function like this (untested): ;)

; Get user's properties from Active Directory
Local $FirstName = _GetProps(@UserName, "givenName")
Local $LastName =  _GetProps(@UserName, "sn")
Local $HomePath =  _GetProps(@UserName, "homedirectory")
Local $ProfilePath =  _GetProps(@UserName, "profilepath")

Func _GetProps($sUserName, $sProperty)
    Local $ADGOPTmp = _AD_GetObjectProperties($sUserName, $sProperty)
    Return $ADGOPTmp[1][1]
EndFunc

Looks a bit more elegant that way. :)

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

It just looks so.... unoptimized like that, though. :)

Can't you copy and edit _AD_GetObjectProperties() so it doesn't create the array, just return the needed value?
Link to comment
Share on other sites

The type of side effect you want where a temporary is created on assignment or as a result of a constructor is common to c++ type OOP languages. In scripting it's more of a C# thing.

In c/c++ circles those things are cool. In some other languages they are considered bugs waiting to surface. :)

But for c based it's really designed from the beginning. while(c = *p++) the while evaluates the side effect of the assignment to 'c' to see if it's a zero/NULL whatever, to stop the loop.

Edited by MilesAhead
Link to comment
Share on other sites

Use

; Get user's attributes from Active Directory
Local $FirstName = _AD_GetObjectAttribute(@UserName,"givenName")
Local $LastName = _AD_GetObjectAttribute(@UserName,"sn")
Local $HomePath = _AD_GetObjectAttrbibute(@UserName,"homedirectory")
Local $ProfilePath = _AD_GetObjectAttribute(@UserName,"profilepath")

_AD_GetObjectAttribute only returns a single attribute and does note "decode" data (e.g. convert date into a readable form).

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

And if you want/need to stick with _AD_GetObjectProperties then use:

; Get user's properties from Active Directory
Local $ADGOPTmp
$ADGOPTmp = _AD_GetObjectProperties(@UserName,"givenName,homedirectory,profilepath,sn")
Local $FirstName = $ADGOPTmp[1][1]
Local $LastName = $ADGOPTmp[4][1]
Local $HomePath = $ADGOPTmp[2][1]
Local $ProfilePath = $ADGOPTmp[3][1]

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

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...