Valnurat Posted March 31, 2016 Posted March 31, 2016 (edited) 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 March 31, 2016 by Valnurat GoogleGonnaSaveUs 1 Yours sincerely Kenneth.
JohnOne Posted March 31, 2016 Posted March 31, 2016 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.
rudi Posted March 31, 2016 Posted March 31, 2016 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!
Valnurat Posted March 31, 2016 Author Posted March 31, 2016 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.
AutoBert Posted March 31, 2016 Posted March 31, 2016 (edited) 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 March 31, 2016 by AutoBert
Valnurat Posted March 31, 2016 Author Posted March 31, 2016 (edited) Thank you. It worked. Edited March 31, 2016 by Valnurat Yours sincerely Kenneth.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now