Collabora Office 24.04 Βοήθεια
Παρέχει μια συλλογή μεθόδων για το χειρισμό και τον μετασχηματισμό πινάκων μιας διάστασης (διανύσματα) και πινάκων δύο διαστάσεων (πίνακες). Αυτό περιλαμβάνει πράξεις συνόλων, ταξινόμηση, εισαγωγή από και εξαγωγή σε αρχεία κειμένου.
Πίνακες με περισσότερες από δύο διαστάσεις δεν μπορούν να χρησιμοποιηθούν με τις μεθόδους αυτής της υπηρεσίας, η μόνη εξαίρεση είναι η μέθοδος CountDims που δέχεται Πίνακες με οποιονδήποτε αριθμό διαστάσεων.
Τα στοιχεία πίνακα μπορεί να περιέχουν οποιονδήποτε τύπο τιμής, συμπεριλαμβανομένων (υπο)πινάκων.
Πριν χρησιμοποιήσετε την υπηρεσία Array, η βιβλιοθήκη ScriptForge πρέπει να φορτωθεί χρησιμοποιώντας:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
Η φόρτωση της βιβλιοθήκης θα δημιουργήσει το αντικείμενο SF_Array που μπορεί να χρησιμοποιηθεί για την κλήση των μεθόδων στην υπηρεσία Array.
Τα παρακάτω αποσπάσματα κώδικα δείχνουν τους διάφορους τρόπους κλήσης μεθόδων στην υπηρεσία Array (η μέθοδος Append χρησιμοποιείται ως παράδειγμα):
Dim arr : arr = Array(1, 2, 3)
arr = SF_Array.Append(arr, 4)
Dim arr : arr = Array(1, 2, 3)
Dim svc : svc = SF_Array
arr = svc.Append(arr, 4)
Dim arr : arr = Array(1, 2, 3)
Dim svc : svc = CreateScriptService("Array")
arr = svc.Append(arr, 4)
Επειδή η Python διαθέτει ενσωματωμένη υποστήριξη καταλόγου και πλειάδας, οι περισσότερες από τις μεθόδους στην υπηρεσία Array είναι διαθέσιμες μόνο για σενάρια Basic. Η μόνη εξαίρεση είναι το ImportFromCSVFile το οποίο υποστηρίζεται τόσο σε Basic όσο και σε Python.
Το πρώτο όρισμα των περισσότερων μεθόδων είναι το αντικείμενο του πίνακα που πρέπει να ληφθεί υπόψη. Περνιέται πάντα με αναφορά και αφήνεται αμετάβλητο. Μέθοδοι όπως Append, Prepend κ.λπ. επιστρέφουν ένα νέο αντικείμενο πίνακα μετά την εκτέλεσή τους.
Προσθέτει τα στοιχεία που παρατίθενται ως ορίσματα στο τέλος του πίνακα εισόδου.
svc.Append(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]
array_1d: Ο προϋπάρχων πίνακας μπορεί να είναι κενός.
arg0, arg1, ...: Στοιχεία που θα προστεθούν στο array_1d.
Dim a As Variant
a = SF_Array.Append(Array(1, 2, 3), 4, 5)
' (1, 2, 3, 4, 5)
Προσθέτει μια νέα στήλη στη δεξιά πλευρά ενός δισδιάστατου πίνακα. Ο πίνακας που προκύπτει έχει τα ίδια κάτω όρια με τον αρχικό δισδιάστατο πίνακα.
svc.AppendColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]
array_2d: Ο προϋπάρχων πίνακας μπορεί να είναι κενός. Εάν αυτός ο πίνακας έχει μόνο μία διάσταση, θεωρείται ως η πρώτη στήλη του δισδιάστατου πίνακα που προκύπτει.
στήλη: Ένας μονοδιάστατος πίνακας με τόσα στοιχεία όσες υπάρχουν σειρές στον array_2d.
Dim a As Variant, b As variant
a = SF_Array.AppendColumn(Array(1, 2, 3), Array(4, 5, 6))
' ((1, 4), (2, 5), (3, 6))
b = SF_Array.AppendColumn(a, Array(7, 8, 9))
' ((1, 4, 7), (2, 5, 8), (3, 6, 9))
c = SF_Array.AppendColumn(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
Προσθέστε στο κάτω μέρος ενός πίνακα δύο διαστάσεων μια νέα σειρά. Ο πίνακας που προκύπτει έχει τα ίδια κάτω όρια με τον αρχικό πίνακα δύο διαστάσεων.
svc.AppendRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*])
array_2d: Ο προϋπάρχων πίνακας μπορεί να είναι κενός. Εάν αυτός ο πίνακας έχει 1 διάσταση, θεωρείται ως η πρώτη σειρά του πίνακα 2 διαστάσεων που προκύπτει.
σειρά: Ένας μονοδιάστατος πίνακας με τόσα στοιχεία όσες στήλες υπάρχουν στον array_2d.
Dim a As Variant, b As variant
a = SF_Array.AppendRow(Array(1, 2, 3), Array(4, 5, 6))
' ((1, 2, 3), (4, 5, 6))
b = SF_Array..AppendRow(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
Ελέγξτε εάν ένας πίνακας μιας διάστασης περιέχει έναν συγκεκριμένο αριθμό, κείμενο ή ημερομηνία. Η σύγκριση κειμένου μπορεί να είναι με διάκριση πεζών-κεφαλαίων ή όχι.
Οι ταξινομημένοι πίνακες εισόδου πρέπει να γεμίζονται ομοιογενώς, πράγμα που σημαίνει ότι όλα τα στοιχεία πρέπει να είναι βαθμίδες του ίδιου τύπου (τα στοιχεία Empty και Null απαγορεύονται).
Το αποτέλεσμα της μεθόδου είναι απρόβλεπτο όταν ο πίνακας ανακοινώνεται ως ταξινομημένος και στην πραγματικότητα δεν είναι.
Γίνεται μια δυαδική αναζήτηση όταν ταξινομηθεί ο πίνακας, διαφορετικά, απλώς σαρώνεται από πάνω προς τα κάτω και τα στοιχεία Empty και Null αγνοούνται.
svc.Contains(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ""): bool
array_1d: Ο πίνακας για σάρωση.
προς_εύρεση (tofind): Ένας αριθμός, μια ημερομηνία ή μια συμβολοσειρά για εύρεση.
διάκριση πεζών-κεφαλαίων: Μόνο για συγκρίσεις συμβολοσειρών (Προεπιλογή = False).
ταξινομητής (sortorder): Μπορεί να είναι είτε "ASC" (αύξουσα), "DESC" (φθίνουσα) ή "" (χωρίς ταξινόμηση). Η προεπιλεγμένη τιμή είναι "".
Dim a As Variant
a = SF_Array.Contains(Array("A","B","c","D"), "C", SortOrder := "ASC") ' True
SF_Array.Contains(Array("A","B","c","D"), "C", CaseSensitive := True) ' False
Αποθηκεύστε το περιεχόμενο ενός πίνακα 2 στηλών σε ένα αντικείμενο ScriptForge.Dictionary.
Το κλειδί θα εξαχθεί από την πρώτη στήλη και το στοιχείο από τη δεύτερη.
svc.ConvertToDictionary(array_2d: any[0..*, 0..1]): obj
array_2d: Δεδομένα που θα μετατραπούν σε αντικείμενο ScriptForge.Dictionary.
Η πρώτη στήλη πρέπει να περιέχει αποκλειστικά συμβολοσειρές με μήκος μεγαλύτερο του μηδέν, με οποιαδήποτε σειρά. Αυτές οι τιμές θα χρησιμοποιηθούν ως ετικέτες στο λεξικό.
Η δεύτερη στήλη περιέχει τα δεδομένα που θα συσχετιστούν με την αντίστοιχη ετικέτα στο λεξικό.
Dim a As Variant, b As Variant
a = SF_Array.AppendColumn(Array("a", "b", "c"), Array(1, 2, 3))
b = SF_Array.ConvertToDictionary(a)
MsgBox b.Item("c") ' 3
Δημιουργεί ένα αντίγραφο ενός πίνακα 1Δ ή 2Δ.
svc.Copy(array_nd: any[0..*]): any[0..*]
svc.Copy(array_nd: any[0..*, 0..*]): any[0..*, 0..*]
array_nd: Ο πίνακας 1Δ ή 2Δ που πρόκειται να αντιγραφεί.
Μια απλή ανάθεση ενός αντικειμένου Array θα αντιγράψει την αναφορά του αντί να δημιουργήσει ένα αντίγραφο των περιεχομένων του αντικειμένου. Δείτε το παρακάτω παράδειγμα:
Dim a as Variant, b as Variant
a = Array(1, 2, 3)
' Η παρακάτω ανάθεση γίνεται με αναφορά
b = a
' Ως εκ τούτου, η αλλαγή των τιμών στο "b" θα αλλάξει επίσης το "a"
b(0) = 10
MsgBox a(0) ' 10
Χρησιμοποιώντας τη μέθοδο Copy, δημιουργείται ένα αντίγραφο ολόκληρου του αντικειμένου Array. Στο παρακάτω παράδειγμα, τα a και b είναι διαφορετικά αντικείμενα και η αλλαγή των τιμών στο b δεν θα επηρεάσει τις τιμές στο a .
Dim a as Variant, b as Variant
a = Array(1, 2, 3)
' Δημιουργεί ένα αντίγραφο του "a" χρησιμοποιώντας τη μέθοδο "Copy".
b = SF_Array.Copy(a)
b(0) = 10
MsgBox a(0) ' 1
Μέτρηση του αριθμού των διαστάσεων ενός πίνακα. Το αποτέλεσμα μπορεί να είναι μεγαλύτερο από δύο.
Εάν το όρισμα δεν είναι πίνακας, επιστρέφει -1
Εάν ο πίνακας δεν είναι αρχικοποιημένος, επιστρέφει 0.
svc.CountDims(array_nd: any): int
array_nd: Ο πίνακας προς εξέταση.
Dim a(1 To 10, -3 To 12, 5)
MsgBox SF_Array.CountDims(a) ' 3
Δημιουργήστε ένα σύνολο, ως πίνακα μηδενικής βάσης, εφαρμόζοντας τον τελεστή διαφοράς στους δύο πίνακες εισόδου. Τα στοιχεία που προκύπτουν προέρχονται από τον πρώτο πίνακα και όχι από τον δεύτερο.
Ο πίνακας που προκύπτει ταξινομείται με αύξουσα σειρά.
Και οι δύο πίνακες εισόδου πρέπει να συμπληρωθούν ομοιογενώς, τα στοιχεία τους πρέπει να είναι βαθμωτά του ίδιου τύπου. Τα στοιχεία Empty και Null απαγορεύονται.
Η σύγκριση κειμένου μπορεί να κάνει διάκριση πεζών-κεφαλαίων ή όχι.
svc.Difference(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]
array1_1d: Ένας μονοδιάστατος πίνακας αναφοράς, του οποίου τα στοιχεία εξετάζονται για κατάργηση.
array2_1d: Ένας μονοδιάστατος πίνακας, του οποίου τα στοιχεία αφαιρούνται από τον πρώτο πίνακα εισόδου.
casesensitive (διάκριση πεζών-κεφαλαίων): Αυτό το όρισμα ισχύει μόνο εάν οι πίνακες είναι συμπληρωμένοι με συμβολοσειρές (Προεπιλογή = False).
Dim a As Variant
a = SF_Array.Difference(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("A", "B")
Γράψτε όλα τα στοιχεία του πίνακα διαδοχικά σε ένα αρχείο κειμένου. Εάν το αρχείο υπάρχει ήδη, θα αντικατασταθεί χωρίς προειδοποίηση.
svc.ExportToTextFile(array_1d: any[0..*], filename: str, [encoding: str]): bool
array_1d: Ο πίνακας προς εξαγωγή. Πρέπει να περιέχει μόνο συμβολοσειρές.
filename (όνομα αρχείου): Το όνομα του αρχείου κειμένου στο οποίο θα εγγραφούν τα δεδομένα. Το όνομα πρέπει να εκφράζεται σύμφωνα με την τρέχουσα ιδιότητα FileNaming της υπηρεσίας SF_FileSystem.
encoding (κωδικοποίηση): Το σύνολο χαρακτήρων που πρέπει να χρησιμοποιηθεί. Χρησιμοποιήστε ένα από τα ονόματα που αναφέρονται στα σύνολα χαρακτήρων IANA. Σημειώστε ότι το Collabora Office ενδέχεται να μην εφαρμόσει όλα τα υπάρχοντα σύνολα χαρακτήρων (Η προεπιλογή είναι "UTF-8").
SF_Array.ExportToTextFile(Array("A","B","C","D"), "C:\Temp\A short file.txt")
Εξαγωγή από έναν πίνακα δύο διαστάσεων μιας συγκεκριμένης στήλης ως νέου πίνακα.
Τα κατώτερα LBound και τα ανώτερα όρια UBound είναι ταυτόσημα με αυτά της πρώτης διάστασης του πίνακα εισόδου.
svc.ExtractColumn(array_2d: any[0..*, 0..*], columnindex: int): any[0..*, 0..*]
array_2d: Ο πίνακας από τον οποίο γίνεται η εξαγωγή.
columnindex (δείκτης στήλης): Ο αριθμός στήλης προς εξαγωγή - πρέπει να βρίσκεται στο διάστημα [LBound, UBound].
'Δημιουργεί μια μήτρα 3x3: |1, 2, 3|
' |4, 5, 6|
' |7, 8, 9|
Dim mat as Variant, col as Variant
mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
'Εξάγει την τρίτη στήλη: |3, 6, 9|
col = SF_Array.ExtractColumn(mat, 2)
Εξαγωγή από έναν πίνακα δύο διαστάσεων μιας συγκεκριμένης σειράς ως νέου πίνακα.
Τα κατώτερα LBound και τα ανώτερα όρια UBound είναι ταυτόσημα με αυτά της δεύτερης διάστασης του πίνακα εισόδου.
svc.ExtractRow(array_2d: any[0..*, 0..*], rowindex: int): any[0..*, 0..*]
array_2d: Ο πίνακας από τον οποίο γίνεται η εξαγωγή.
rowindex (δείκτης_σειράς): Ο αριθμός σειράς προς εξαγωγή - πρέπει να βρίσκεται στο διάστημα [LBound, UBound].
'Δημιουργεί μια μήτρα 3x3: |1, 2, 3|
' |4, 5, 6|
' |7, 8, 9|
Dim mat as Variant, row as Variant
mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
'Εξάγει την πρώτη σειρά: |1, 2, 3|
row = SF_Array.ExtractRow(mat, 0)
Στοιβάξτε όλα τα μεμονωμένα στοιχεία ενός πίνακα και όλα τα στοιχεία στους υποπίνακες του σε έναν νέο πίνακα χωρίς υποπίνακες. Οι κενές υποσυστοιχίες αγνοούνται και οι υποσυστοιχίες με αριθμό διαστάσεων μεγαλύτερο από ένα δεν ισοπεδώνονται.
svc.Flatten(array_1d: any[0..*]): any[0..*]
array_1d: Ο προϋπάρχων πίνακας μπορεί να είναι κενός.
Dim a As Variant
a = SF_Array.Flatten(Array(Array(1, 2, 3), 4, 5))
' (1, 2, 3, 4, 5)
Μπορείτε να χρησιμοποιήσετε τη μέθοδο Flatten μαζί με άλλες μεθόδους, όπως Append ή Prepend για να συνενώσετε ένα σύνολο από πίνακες 1Δ σε έναν μόνο πίνακα 1Δ.
Ακολουθεί ένα παράδειγμα του τρόπου με τον οποίο οι μέθοδοι Flatten και Append μπορούν να συνδυαστούν για να συνενώσουν τρεις πίνακες.
'Δημιουργεί τρεις πίνακες για αυτό το παράδειγμα
Dim a as Variant, b as Variant, c as Variant
a = Array(1, 2, 3)
b = Array(4, 5)
c = Array(6, 7, 8, 9)
'Συνενώνει τους τρεις πίνακες σε έναν ενιαίο πίνακα 1Δ
Dim arr as Variant
arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
'(1, 2, 3, 4, 5, 6, 7, 8, 9)
Εισαγωγή των δεδομένων που περιέχονται σε ένα αρχείο τιμών διαχωρισμένων με κόμματα (CSV). Το κόμμα μπορεί να αντικατασταθεί από οποιονδήποτε χαρακτήρα.
Η ισχύουσα μορφή CSV περιγράφεται στο Κοινή μορφή IETF και Τύπος MIME για αρχεία CSV.
Κάθε γραμμή στο αρχείο περιέχει μια πλήρη εγγραφή (δεν επιτρέπεται ο διαχωρισμός γραμμής).
Ωστόσο, ακολουθίες όπως \n, \t, ... παραμένουν αμετάβλητες. Χρησιμοποιήστε τη μέθοδο SF_String.Unescape() για να τα διαχειριστείτε.
Η μέθοδος επιστρέφει έναν πίνακα δύο διαστάσεων του οποίου οι σειρές αντιστοιχούν σε μια μεμονωμένη εγγραφή που διαβάζεται στο αρχείο και του οποίου οι στήλες αντιστοιχούν σε ένα πεδίο της εγγραφής. Δεν πραγματοποιείται έλεγχος σχετικά με τη συνοχή των τύπων πεδίων στις στήλες. Θα γίνει μια καλύτερη εικασία για τον εντοπισμό αριθμητικών τύπων και τύπων ημερομηνίας.
Εάν μια γραμμή περιέχει λιγότερα ή περισσότερα πεδία από την πρώτη γραμμή του αρχείου, θα δημιουργηθεί μια εξαίρεση. Ωστόσο, οι κενές γραμμές απλώς αγνοούνται. Εάν το μέγεθος του αρχείου υπερβαίνει το όριο του αριθμού των στοιχείων (δείτε μέσα στον κώδικα), εμφανίζεται μια προειδοποίηση και ο πίνακας περικόπτεται.
svc.ImportFromCSVFile(filename: str, delimiter: str = ',', dateformat: str = ''): any[0..*]
filename (όνομα αρχείου): Το όνομα του αρχείου κειμένου που περιέχει τα δεδομένα. Το όνομα πρέπει να εκφράζεται σύμφωνα με την τρέχουσα ιδιότητα FileNaming της υπηρεσίας SF_FileSystem.
delimiter (οριοθέτης): Ένας μεμονωμένος χαρακτήρας, συνήθως, ένα κόμμα, ένα ερωτηματικό ή ένας χαρακτήρας TAB (Προεπιλογή = ",").
dateformat (μορφή ημερομηνίας): Ένας ειδικός μηχανισμός χειρίζεται ημερομηνίες όταν η dateformat είναι είτε "ΕΕΕΕ-ΜΜ-ΗΗ", "ΗΗ-ΜΜ-ΕΕΕΕ" ή "ΜΜ-ΗΗ-ΕΕΕΕ". Η παύλα (-) μπορεί να αντικατασταθεί από μια τελεία (.), μια κάθετο (/) ή ένα κενό. Άλλες μορφές ημερομηνίας θα αγνοηθούν. Οι ημερομηνίες που είναι προεπιλεγμένες σε μια κενή συμβολοσειρά "" θεωρούνται ως κανονικό κείμενο.
Εξετάστε το αρχείο CSV "myFile.csv" με τα ακόλουθα περιεχόμενα:
Όνομα, ΗμερομηνίαΓέννησης, Διεύθυνση, Πόλη
Άννα, 31/03/2002, "Οδός Εκκλησίας, 21", Τουλούζ
Φρεντ, 04/05/1998, "Οδός Αλβέρτου Αϊνστάιν, 113Α", Καρκασόν
Τα παρακάτω παραδείγματα σε Basic και Python διαβάζουν τα περιεχόμενα του αρχείου CSV σε ένα αντικείμενο Array.
Dim arr As Variant
arr = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "ΗΗ/ΜΜ/ΕΕΕΕ")
MsgBox arr(0, 3) ' Πόλη
MsgBox arr(1, 2) ' Οδός Εκκλησίας, 21
MsgBox arr(1, 3) ' Τουλούζ
from scriptforge import CreateScriptService
svc = CreateScriptService("Array")
bas = CreateScriptService("Basic")
arr = svc.ImportFromCSVFile(r"C:\Temp\myFile.csv", dateformat = "ΗΗ/ΜΜ/ΕΕΕΕ")
bas.MsgBox(arr[0][3]) # Πόλη
bas.MsgBox(arr[1][2]) # Οδός Εκκλησίας, 21
bas.MsgBox(arr[1][3]) # Τουλούζ
Ψάξτε σε έναν πίνακα μιας διάστασης για έναν αριθμό, μια συμβολοσειρά ή μια ημερομηνία. Η σύγκριση κειμένου μπορεί να είναι με διάκριση πεζών-κεφαλαίων ή όχι.
Εάν ο πίνακας είναι ταξινομημένος, πρέπει να συμπληρωθεί ομοιογενώς, πράγμα που σημαίνει ότι όλα τα στοιχεία πρέπει να είναι βαθμίδες του ίδιου τύπου (τα στοιχεία Empty και Null απαγορεύονται).
Το αποτέλεσμα της μεθόδου είναι απρόβλεπτο όταν ο πίνακας ανακοινώνεται ως ταξινομημένος και στην πραγματικότητα δεν είναι.
Εκτελείται δυαδική αναζήτηση σε ταξινομημένους πίνακες. Διαφορετικά, οι πίνακες απλώς σαρώνονται από πάνω προς τα κάτω και τα στοιχεία Empty και Null αγνοούνται.
Η μέθοδος επιστρέφει LBound(input array) - 1 εάν η αναζήτηση δεν ήταν επιτυχής.
svc.IndexOf(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ''): int
array_1d: Ο πίνακας για σάρωση.
tofind (προς_εύρεση): Ένας αριθμός, μια ημερομηνία ή μια συμβολοσειρά για εύρεση.
casesensitive (διάκριση πεζών-κεφαλαίων): Μόνο για συγκρίσεις συμβολοσειρών (Προεπιλογή = False).
sortorder (ταξινομητής): Μπορεί να είναι είτε "ASC" (αύξουσα), "DESC" (φθίνουσα) ή "" (χωρίς ταξινόμηση). Η προεπιλεγμένη τιμή είναι "".
MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", SortOrder := "ASC") ' 2
MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", CaseSensitive := True) ' -1
Εισαγάγετε πριν από ένα δεδομένο ευρετήριο του πίνακα εισόδου τα στοιχεία που αναφέρονται ως ορίσματα.
Τα ορίσματα εισάγονται τυφλά. Κάθε ένα από αυτά μπορεί να είναι είτε βαθμωτά οποιουδήποτε τύπου είτε υποπίνακας.
svc.Insert(array_1d: any[0..*], before: int, arg0: any, [arg1: any] ...): any[0..*]
array_1d: Ο προϋπάρχων πίνακας μπορεί να είναι κενός.
before (πριν): Το ευρετήριο πριν από το οποίο θα εισαχθεί. Πρέπει να βρίσκεται στο διάστημα [LBound, UBound + 1].
arg0, arg1, ...: Στοιχεία που θα εισαχθούν στο array_1d.
Dim a As Variant
a = SF_Array.Insert(Array(1, 2, 3), 2, "a", "b")
' (1, 2, "a", "b", 3)
Εισάγει σε έναν ταξινομημένο πίνακα ένα νέο στοιχείο στη θέση του.
Ο πίνακας πρέπει να συμπληρωθεί ομοιογενώς, πράγμα που σημαίνει ότι όλα τα στοιχεία πρέπει να είναι βαθμωτά του ίδιου τύπου
. Τα στοιχεία Empty και Null απαγορεύονται.
svc.InsertSorted(array_1d: any[0..*], item: any, sortorder: str = 'ASC', casesensitive: bool = False): any[0..*]
array_1d: Ο πίνακας στον οποίο θα εισαχθεί η τιμή.
item (στοιχείο): Η βαθμωτή τιμή που θα εισαχθεί, του ίδιου τύπου με τα υπάρχοντα στοιχεία πίνακα.
sortorder (ταξινομητής): Μπορεί να είναι είτε "ASC" (προεπιλογή) (αύξουσα) ή "DESC" (φθίνουσα).
casesensitive (διάκριση πεζών-κεφαλαίων): Μόνο για συγκρίσεις συμβολοσειρών (Προεπιλογή = False).
Dim a As Variant
a = SF_Array.InsertSorted(Array("A", "C", "a", "b"), "B", CaseSensitive := True)
' ("A", "B", "C", "a", "b")
Δημιουργήστε ένα σύνολο, ως πίνακα μηδενικής βάσης, εφαρμόζοντας τον τελεστή συνόλου τομής στους δύο πίνακες εισόδου. Τα στοιχεία που προκύπτουν περιέχονται και στους δύο πίνακες.
Ο πίνακας που προκύπτει ταξινομείται με αύξουσα σειρά.
Και οι δύο πίνακες εισόδου πρέπει να συμπληρωθούν ομοιογενώς, με άλλα λόγια όλα τα στοιχεία πρέπει να είναι βαθμωτά του ίδιου τύπου. Τα στοιχεία Empty και Null απαγορεύονται.
Η σύγκριση κειμένου μπορεί να κάνει διάκριση πεζών-κεφαλαίων ή όχι.
svc.Intersection(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]
array1_1d: Ο πρώτος πίνακας εισόδου.
array2_1d: Ο δεύτερος πίνακας εισόδου.
casesensitive (διάκριση πεζών-κεφαλαίων): Ισχύει για πίνακες που συμπληρώνονται με στοιχεία κειμένου (Προεπιλογή = False).
Dim a As Variant
a = SF_Array.Intersection(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("C", "b")
Συνδέστε έναν δισδιάστατο πίνακα με δύο οριοθέτες, έναν για τις στήλες και έναν για τις σειρές.
svc.Join2D(array_2d: any [0..*, 0..*], [columndelimiter: str], [rowdelimiter: str], [quote: str]): str
array_2d: Κάθε στοιχείο πρέπει να είναι είτε κείμενο, αριθμός, ημερομηνία ή Μπουλ.
Οι ημερομηνίες μετατρέπονται στη μορφή ΕΕΕΕ-ΜΜ-ΗΗ ωω:λλ:δδ.
Τα μη έγκυρα στοιχεία αντικαθίστανται από μια συμβολοσειρά μηδενικού μήκους.
columndelimiter (οριοθέτης στήλης): Οριοθετεί κάθε στήλη (προεπιλογή = Tab/Chr(9)).
rowdelimiter (οριοθέτης σειράς): Οριοθετεί κάθε σειρά (προεπιλογή = LineFeed/Chr(10))
quote (εισαγωγικό): Εάν True, προστατέψτε τις συμβολοσειρές με διπλά εισαγωγικά. Η προεπιλογή είναι False.
' arr = | 1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5 |
' | 6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10 |
Dim arr as Variant : arr = Array()
arr = SF_Array.AppendRow(arr, Array(1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5))
arr = SF_Array.AppendRow(arr, Array(6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10))
Dim arrText as String
arrText = SF_Array.Join2D(arr, ",", "/", False)
' 1,2,A,,51,2,A,,5/6,7,this is a string,9,106,7,this is a string,9,10
Προσθέστε στην αρχή του πίνακα εισόδου τα στοιχεία που αναφέρονται ως ορίσματα.
svc.Prepend(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]
array_1d: Ο προϋπάρχων πίνακας μπορεί να είναι κενός.
arg0, arg1, ...: Ένας κατάλογος στοιχείων που θα προστεθούν στο array_1d.
Dim a As Variant
a = SF_Array.Prepend(Array(1, 2, 3), 4, 5)
' (4, 5, 1, 2, 3)
Προσαρτήστε στην αριστερή πλευρά ενός πίνακα δύο διαστάσεων μια νέα στήλη. Ο πίνακας που προκύπτει έχει τα ίδια κατώτερα όρια με τον αρχικό πίνακα δύο διαστάσεων.
svc.PrependColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]
array_2d: Ο προϋπάρχων πίνακας μπορεί να είναι κενός. Εάν αυτός ο πίνακας έχει 1 διάσταση, θεωρείται ως η τελευταία στήλη του πίνακα 2 διαστάσεων που προκύπτει.
column (στήλη): Ένας μονοδιάστατος πίνακας με τόσα στοιχεία όσες σειρές υπάρχουν στον array_2d.
Dim a As Variant, b As variant
a = SF_Array.PrependColumn(Array(1, 2, 3), Array(4, 5, 6))
' ((4, 1), (5, 2), (6, 3))
b = SF_Array.PrependColumn(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
Προτάξτε μια νέα σειρά στην αρχή ενός δισδιάστατου πίνακα. Ο πίνακας που προκύπτει έχει τα ίδια κάτω όρια με τον αρχικό δισδιάστατο πίνακα.
svc.PrependRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*]
array_2d: Ο προϋπάρχων πίνακας μπορεί να είναι κενός. Εάν αυτός ο πίνακας έχει 1 διάσταση, θεωρείται ως η τελευταία σειρά του δισδιάστατου πίνακα που προκύπτει.
row (σειρά): Ένας μονοδιάστατος πίνακας που περιέχει τόσα στοιχεία όσες και στήλες στον array_2d.
Dim a As Variant, b As variant
a = SF_Array.PrependRow(Array(1, 2, 3), Array(4, 5, 6))
' ((4, 5, 6), (1, 2, 3))
b = SF_Array.PrependRow(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
Αρχικοποίηση ενός νέου πίνακα μηδενικής βάσης με αριθμητικές τιμές.
svc.RangeInit(from: num, upto: num, [bystep: num]): num[0..*]
from (από): Τιμή του πρώτου στοιχείου.
upto (έως): Το τελευταίο στοιχείο δεν πρέπει να υπερβαίνει το UpTo.
bystep (με_βήμα): Η διαφορά μεταξύ δύο διαδοχικών στοιχείων (Προεπιλογή = 1).
Dim a As Variant
a = SF_Array.RangeInit(10, 1, -1)
' (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
Επιστροφή του αντίστροφου πίνακα εισόδου μιας διάστασης.
svc.Reverse(array_1d: any[0..*]): any[0..*]
array_1d: Ο πίνακας για αντιστροφή.
Dim a As Variant
a = SF_Array.Reverse(Array("a", 2, 3, 4))
' (4, 3, 2, "a")
Επιστρέφει μια τυχαία μετάθεση ενός μονοδιάστατου πίνακα.
svc.Shuffle(array_1d: any[0..*]): any[0..*]
array_1d: Ο πίνακας για τυχαία σειρά.
Dim a As Variant
a = SF_Array.Shuffle(Array(1, 2, 3, 4))
Ο πίνακας "a" είναι τώρα σε τυχαία σειρά, f.i. (2, 3, 1, 4)
Επιστρέφει ένα υποσύνολο ενός μονοδιάστατου πίνακα.
svc.Slice(array_1d: any[0..*], from: int, [upto: int]): any[0..*]
array_1d: Ο πίνακας προς κοπή.
from (από): Ο χαμηλότερος δείκτης στον array_1d του υποπίνακα προς εξαγωγή (συμπεριλαμβάνεται from)
upto (μέχρι): Ο ανώτερος δείκτης στο array_1d του υποπίνακα προς εξαγωγή (συμπεριλαμβάνεται upto). Η προεπιλεγμένη τιμή είναι το άνω όριο του array_1d. Εάν upto < from τότε ο πίνακας που επιστρέφεται είναι κενός.
Dim a As Variant
a = SF_Array.Slice(Array(1, 2, 3, 4, 5), 1, 3) ' (2, 3, 4)
Ταξινόμηση ενός πίνακα μιας διάστασης σε αύξουσα ή φθίνουσα σειρά. Οι συγκρίσεις κειμένων μπορεί να είναι με διάκριση πεζών-κεφαλαίων ή όχι.
Ο πίνακας πρέπει να γεμίσει ομοιογενώς, πράγμα που σημαίνει ότι τα στοιχεία πρέπει να είναι βαθμωτά του ίδιου τύπου. Επιτρέπονται τα στοιχεία
Empty και Null. Συμβατικά Empty < Null < οποιαδήποτε άλλη βαθμωτή τιμή.
svc.Sort(array_1d: any[0..*], sortorder: str, casesensitive: bool = False): any[0..*]
array_1d: Ο πίνακας για ταξινόμηση.
sortorder (ταξινομητής): Μπορεί να είναι είτε "ASC" (προεπιλογή) (αύξουσα) ή "DESC" (φθίνουσα).
casesensitive (διάκριση πεζών-κεφαλαίων): Μόνο για συγκρίσεις συμβολοσειρών (Προεπιλογή = False).
Dim a As Variant
a = SF_Array.Sort(Array("a", "A", "b", "B", "C"), CaseSensitive := True)
' ("A", "B", "C", "a", "b")
Επιστροφή μιας μετάθεσης των στηλών ενός πίνακα δύο διαστάσεων, ταξινομημένων με βάση τις τιμές μιας δεδομένης σειράς.
Η σειρά πρέπει να γεμίσει ομοιογενώς, πράγμα που σημαίνει ότι όλα τα στοιχεία πρέπει να είναι βαθμωτά του ίδιου τύπου. Επιτρέπονται τα στοιχεία
Empty και Null. Συμβατικά Empty < Null < οποιαδήποτε άλλη βαθμωτή τιμή.
svc.SortColumns(array_2d: any[0..*, 0..*], rowindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]
array_2d: Ο δισδιάστατος πίνακας για ταξινόμηση.
rowindex (δείκτης σειράς): Το ευρετήριο της σειράς που θα χρησιμοποιηθεί ως αναφορά για την ταξινόμηση των στηλών.
sortorder (ταξινομητής): Μπορεί να είναι είτε "ASC" (προεπιλογή) (αύξουσα) ή "DESC" (φθίνουσα).
casesensitive (διάκριση πεζών-κεφαλαίων): Μόνο για συγκρίσεις συμβολοσειρών (Προεπιλογή = False).
' arr = | 5, 7, 3 |
' | 1, 9, 5 |
' | 6, 1, 8 |
Dim arr as Variant : arr = Array(5, 7, 3)
arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
arr = SF_Array.SortColumns(arr, 2, "ASC")
' arr = | 7, 5, 3 |
' | 9, 1, 5 |
' | 1, 6, 8 |
Επιστροφή μιας μετάθεσης των γραμμών ενός πίνακα δύο διαστάσεων, ταξινομημένων με βάση τις τιμές μιας δεδομένης στήλης.
Η στήλη πρέπει να γεμίσει ομοιογενώς, επομένως όλα τα στοιχεία πρέπει να είναι βαθμίδες του ίδιου τύπου. Επιτρέπονται τα στοιχεία
Empty και Null. Συμβατικά Empty < Null < οποιαδήποτε άλλη βαθμωτή τιμή.
svc.SortRows(array_2d: any[0..*, 0..*], columnindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]
array_2d: Ο πίνακας για ταξινόμηση.
columnindex (ευρετήριο_στήλης): Το ευρετήριο της στήλης που θα χρησιμοποιηθεί ως αναφορά για την ταξινόμηση των σειρών.
sortorder (ταξινομητής): Μπορεί να είναι είτε "ASC" (προεπιλογή) (αύξουσα) ή "DESC" (φθίνουσα).
casesensitive (διάκριση πεζών-κεφαλαίων): Μόνο για συγκρίσεις συμβολοσειρών (Προεπιλογή = False).
' arr = | 5, 7, 3 |
' | 1, 9, 5 |
' | 6, 1, 8 |
Dim arr as Variant : arr = Array(5, 7, 3)
arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
arr = SF_Array.SortRows(arr, 0, "ASC")
' arr = | 1, 9, 5 |
' | 5, 7, 3 |
' | 6, 1, 8 |
Εναλλάσσει γραμμές και στήλες σε έναν δισδιάστατο πίνακα.
svc.Transpose(array_2d: any[0..*, 0..*]): any[0..*, 0..*]
array_2d: Ο δισδιάστατος πίνακας προς αντιμετάθεση.
' arr1 = | 1, 2 |
' | 3, 4 |
' | 5, 6 |
arr1 = Array(1, 2)
arr1 = SF_Array.AppendRow(arr1, Array(3, 4))
arr1 = SF_Array.AppendRow(arr1, Array(5, 6))
arr2 = SF_Array.Transpose(arr1)
' arr2 = | 1, 3, 5 |
' | 2, 4, 6 |
MsgBox arr2(0, 2) ' 5
Κατάργηση από έναν πίνακα μιας διάστασης όλων των καταχωρήσεων Null, Empty και μηδενικού μήκους.
Τα στοιχεία συμβολοσειράς περικόπτονται με τη συνάρτηση του Collabora Office Basic Trim().
svc.TrimArray(array_1d: any[0..*]): any[0..*]
array_1d: Ο πίνακας για περικοπή.
Dim a As Variant
a = SF_Array.TrimArray(Array("A", "B", Null, " D "))
' ("A", "B", "D")
Δημιουργεί ένα σύνολο, ως πίνακα μηδενικής βάσης, εφαρμόζοντας τον τελεστή ένωσης στους δύο πίνακες εισόδου. Τα στοιχεία που προκύπτουν προέρχονται από οποιονδήποτε από τους δύο πίνακες.
Ο πίνακας που προκύπτει ταξινομείται με αύξουσα σειρά.
Και οι δύο πίνακες εισόδου πρέπει να συμπληρωθούν ομοιογενώς, τα στοιχεία τους πρέπει να είναι βαθμωτές του ίδιου τύπου. Τα στοιχεία Empty και Null απαγορεύονται.
Η σύγκριση κειμένου μπορεί να κάνει διάκριση πεζών-κεφαλαίων ή όχι.
svc.Union(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]
array1_1d: Ο πρώτος πίνακας εισόδου.
array2_1d: Ο δεύτερος πίνακας εισόδου.
casesensitive (διάκριση πεζών-κεφαλαίων): Ισχύει μόνο εάν οι πίνακες είναι συμπληρωμένοι με συμβολοσειρές (Προεπιλογή = False).
Dim a As Variant
a = SF_Array.Union(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("A", "B", "C", "Z", "b")
Δημιουργία ενός συνόλου μοναδικών τιμών που προέρχονται από τον πίνακα εισόδου.
Ο πίνακας εισόδου πρέπει να συμπληρωθεί ομοιογενώς, τα στοιχεία του πρέπει να είναι βαθμωτές του ίδιου τύπου. Τα στοιχεία Empty και Null απαγορεύονται.
Η σύγκριση κειμένου μπορεί να κάνει διάκριση πεζών-κεφαλαίων ή όχι.
svc.Unique(array_1d: any[0..*], casesensitive: bool = False): any[0..*]
array_1d: Ο πίνακας εισόδου.
casesensitive (διάκριση πεζών-κεφαλαίων): Ισχύει μόνο εάν ο πίνακας είναι γεμάτος με συμβολοσειρές (Προεπιλογή = False).
Dim a As Variant
a = SF_Array.Unique(Array("A", "C", "A", "b", "B"), CaseSensitive := True)
' ("A", "B", "C", "b")