'---Script created on 09-09-2023 12:04:17 by Gary 
'Array module
Uses "console"

'At it's simplest OOP is just a container of simular functions
'in this module all functions use arrays in some way

Type ArrayFunctions
  arrtext as string
  delimiter as string


Function _Create(arText as string, delim as string) As Long
   me.arrtext = arText
   me.delimiter = delim
End Function

function Chg_ArrayText(arText as string) as string
   me.arrText = arText
end function

function Chg_Delimiter(delim as string) as string
   me.delimiter = delim
end function

function Text2Array(ByRef arr() As String)
  dim parsecnt as long,tcnt as long
  parseCnt = ParseCount(me.arrText,me.delimiter)
  ReDim arr(parsecnt) As String
  Parse me.arrtext, arr(),me.delimiter

end function

Function Array2Text(a() As String) As String
    Function =Join$(a(),me.delimiter)
End Function

FUNCTION Array2Clip(a() As String)
    Dim dd3 As String

function Clip2Array(byref arr() as string) as String
  dim st As String
    st = ClipBoard_GetText
    ReDim arr(ParseCount(st,me.delimiter)) As String
    Parse st, arr(),me.delimiter

end function

function RemoveDuplicates (Arr() As string) as long
'fxm from freebasic
    Dim LB As Integer , j As Integer, UB As Integer
    UB = Ubound(Arr)
    LB = LBound(Arr)
    Do While LB < UB
        j = LB + 1
        Do While j <= UB
            If Arr(LB) = Arr(j) Then
                Arr(j) = Arr(UB)
                UB = UB - 1
                j = j + 1
            End If
        LB = LB + 1
    Redim Preserve Arr(UB)

End function

function printArray(arr() as string) as string

Printl me.Array2Text(arr ) + $crlf

end function
end type

dim tarr(6) as string
dim main as string,stxt as string
dim newArr(4) as string,nArr(4) as string

stxt= "aaaa"+$crlf
stxt += "bbbb"+$crlf
stxt += "cccc"+$crlf
stxt += "dddd"+$crlf

Dim arr As ArrayFunctions(stxt,$crlf)  'array module

nArr(1)= "1"
nArr(2)= "2"
nArr(3)= "3"
nArr(4)= "4"

Print "--------------------------------------------"+$crlf
Print "-Print the NewArr()-------------------------"+$crlf
'note: do not put parenthesis after arrayName
arr.Text2Array(  newArr ) 
arr.PrintArray( newArr )

stxt= "1111"+$crlf
stxt += "2222"+$crlf
stxt += "3333"+$crlf
stxt += "4444"+$crlf

'next 3 stmts puts new text in oop text string
'puts text in array
'puts it back to text so it can be printed out
Print "--------------------------------------------"+$crlf
Print "-Print the changed NewArr()-----------------"+$crlf
arr.Chg_ArrayText(stxt) : arr.Chg_Delimiter($crlf)
arr.Text2Array(  newArr ) 
arr.PrintArray( newArr )

Print "--------------------------------------------"+$crlf
Print "-Removes Duplicates from Array tarr()-------"+$crlf
tarr(1)= "1"
tarr(2)= "2"
tarr(3)= "3"
tarr(4)= "4"
tarr(5)= "4"
tarr(6)= "4"

arr.PrintArray( tarr )