Jump to content

Save an array to file with @TAB delimiter


Recommended Posts

I'm trying to save an array to a file with TAB as a delimiter so it looks nice and the lines are not jumping.

I have seen this

_FileWriteFromArray($sFilePath,$aEndResult,Default,Default,@TAB)

but the content of the file is jumpy.

My array contains 3 column and I'm affraid if the 1. column is to short/long it will jump.

I add to the array like this and it looks ok when I use _arraydisplay

_ArrayAdd($aEndResult,$aUser[$i] & '|' & $sSetAccountDate & '|' & 'FAILED')
_ArrayAdd($aEndResult,$aUser[$i] & '|' & $sSetAccountDate & '|' & 'OK')

FileContent:

DKSOCNNC    2016/09/31 07:52:16 Failed
DKSOGVY 2016/04/31 06:20:31 Failed

Is there a way to control that?

Edited by Valnurat

Yours sincerely

Kenneth.

Link to comment
Share on other sites

I imagine it to be a very complex function for a generic function to do what is needed, but for a simple array like you demonstrate here, looping through the array testing string length of element 0, and appending with either 1 or 2 tabs appropriately might suffice.

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

Hi,

Welcome to the forum :)

 

Please look up in the help files the function "StringFormat()"

 

<cite>

PrintFormat($sString, "[%-10s]", "10 chars left justified with added spaces") ; [string    ]

</cite>

Do get appropriate results first of all loop through your array to catch the longest sting in your collumn 1 so that you know, how many char's you will need for all the other "Col-1-Values".

 

Regards, Rudi.

 

Earth is flat, pigs can fly, and Nuclear Power is SAFE!

Link to comment
Share on other sites

Done that and I know the longest string now, but what then?

Local $ilen = 0
    For $i = 0 to UBound($aEndResult) -1
        if $ilen < StringLen($aEndResult[$i][0]) Then
            $ilen = StringLen($aEndResult[$i][0])
        EndIf
    Next
    MsgBox($MB_SYSTEMMODAL, "EndResultLen", $ilen)

Do I run through the array again and add the length to record?

Sorry for asking, but I don't know how to do this.

 

Yours sincerely

Kenneth.

Link to comment
Share on other sites

Test this (untested) script:

Local $ilen = 0
For $i = 0 to UBound($aEndResult) -1
    if $ilen < StringLen($aEndResult[$i][0]) Then
        $ilen = StringLen($aEndResult[$i][0])
    EndIf
Next
For $i = 0 to UBound($aEndResult) -1
    $aEndResult[$i][0]= StringFormat('%-'&$ilen&'s',$aEndResult[$i][0])
Next

so all elements in first col have the same length and the Delimparameter (@Tab) do the rest using _FileWriteFromArray

Edited by AutoBert
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...