Next TODO is to indent and CRLF some of the subarrays and/or elements, in a way that makes sense to the human eye.
This is different from many of the Array2File or Array2String modules, in that it's strictly textual and readable. At least, that's the goal.
In case anyone wants to take a look, this is a work in progress.
Code: Select all
#define CRLF CHR(10) + CHR(13)
STATIC MultiDimensionalArray_s := ""
Function ConvertArrayToString()
Local ArrayString_s := ""
Local SampleArray_a := ;
{ ;
{"One", "Two", "Three", { "Four", "Five" } }, ;
{ "Six", "Seven" }, ;
{"Eight", "Nine"} ;
}
SampleArray_a := ;
{ ;
{"One", "Two", "Three", { "Four", "Five" } }, ;
{ { "Dummy1", "Dummy2" }, "Six", "Seven" }, ;
{"Eight", "Nine"} ;
}
ArrayString_s := "{ " + CRLF + WriteArray( SampleArray_a, 1 ) + CRLF + " }"
// Send ArrayString_s to file SAMPLEARRAY.TXT
SET CONSOLE OFF
SET PRINTER ON
SET PRINTER TO SAMPLEARRAY.TXT
? ArrayString_s
SET PRINTER OFF
SET PRINTER TO
SET CONSOLE ON
Return Nil
FUNCTION WriteArray(aArray, Level_n )
LOCAL TypeOfElement_s := ""
LOCAL NthElement_n := 0
LOCAL LengthOfArray_n := 0
LengthOfArray_n := LEN(aArray)
MultiDimensionalArray_s := MultiDimensionalArray_s + Space( Level_n )
FOR NthElement_n = 1 TO LengthOfArray_n
TypeOfElement_s = VALTYPE(aArray[NthElement_n])
DO CASE
CASE TypeOfElement_s = 'A'
If NthElement_n == 1
MultiDimensionalArray_s := MultiDimensionalArray_s + " { " + CRLF
Else
If NthElement_n < LengthOfArray_n
MultiDimensionalArray_s := MultiDimensionalArray_s + " { "
Else
If NthElement_n == LengthOfArray_n
MultiDimensionalArray_s := MultiDimensionalArray_s + " { " + CRLF
EndIf
EndIf
EndIf
WriteArray(aArray[NthElement_n], Level_n + 1)
IF ( NthElement_n == 1 .AND. NthElement_n < LengthOfArray_n )
MultiDimensionalArray_s := MultiDimensionalArray_s + " }, " + CRLF
Else
If NthElement_n < LengthOfArray_n
MultiDimensionalArray_s := MultiDimensionalArray_s + " }, "
Else
If NthElement_n == LengthOfArray_n
MultiDimensionalArray_s := MultiDimensionalArray_s + " } " + CRLF
EndIf
EndIf
EndIf
CASE TypeOfElement_s = 'C'
If NthElement_n < LengthOfArray_n
MultiDimensionalArray_s := MultiDimensionalArray_s + aArray[NthElement_n] + ", "
Else
MultiDimensionalArray_s := MultiDimensionalArray_s + aArray[NthElement_n] + " "
EndIf
CASE TypeOfElement_s = 'D'
MultiDimensionalArray_s := MultiDimensionalArray_s + DTOC(aArray[NthElement_n]) + " "
CASE TypeOfElement_s = 'L'
MultiDimensionalArray_s := MultiDimensionalArray_s + IF(aArray[NthElement_n], 'T', 'F') + " "
CASE TypeOfElement_s = 'N'
MultiDimensionalArray_s := MultiDimensionalArray_s + LTRIM(STR(aArray[NthElement_n] ) ) + " "
OTHERWISE
MultiDimensionalArray_s := MultiDimensionalArray_s + 'X' + " "
ENDCASE
NEXT
RETURN MultiDimensionalArray_s