Dịch vụ Từ điển tương tự như đối tượng Bộ sưu tập Cơ bản của Collabora Office tích hợp sẵn, tuy nhiên có nhiều tính năng hơn. Ví dụ: đối tượng Bộ sưu tập không hỗ trợ truy xuất khóa. Hơn nữa, Từ điển cung cấp các khả năng bổ sung như thay thế các khóa, kiểm tra xem một khóa cụ thể đã tồn tại chưa và chuyển đổi Từ điển thành một đối tượng Mảng hoặc chuỗi JSON
gọi dịch vụ
Ví dụ sau tạo myDict như một từ điển rỗng
GlobalScope.BasicLibraries.loadLibrary["ScriptForge"]
Dim myDict As Variant
myDict = CreateScriptService["Dictionary"]
Nên giải phóng tài nguyên sau khi sử dụng
Set myDict = myDict.Dispose[]
Ví dụ bên dưới tạo một phiên bản trống của dịch vụ Từ điển và sử dụng phương thức cập nhật gốc của Python để điền vào đó nội dung của một đối tượng dict Python
dico = dict['A' = 1, 'B' = 2, 'C' = 3]
# Initialize myDict as an empty dict object
myDict = CreateScriptService['Dictionary']
# Load the values of dico into myDict
myDict.update[dico]
myDict['D'] = 4
print[myDict] # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
propval = myDict.ConvertToPropertyValues[]
Có thể tạo một phiên bản của dịch vụ Từ điển bằng cách sử dụng đối tượng dict Python làm đối số như trong ví dụ sau
dico = dict['A' = 1, 'B' = 2, 'C' = 3]
# Initialize myDict with the content of dico
myDict = CreateScriptService['Dictionary', dico]
myDict['D'] = 4
print[myDict] # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
propval = myDict.ConvertToPropertyValues[]
Vì Python có hỗ trợ từ điển tích hợp nên hầu hết các phương thức trong dịch vụ Từ điển chỉ khả dụng cho các tập lệnh Cơ bản. Các trường hợp ngoại lệ là ConvertToPropertyValues và ImportFromPropertyValues được hỗ trợ trong cả Basic và Python
Đặc tính
Tên
Chỉ đọc
Loại hình
Sự mô tả
Đếm
Đúng
Dài
Số mục trong từ điển
vật phẩm
Đúng
Mảng biến thể
Danh sách các mục dưới dạng mảng một chiều
chìa khóa
Đúng
Mảng chuỗi
Danh sách các khóa dưới dạng mảng một chiều
Thuộc tính Khóa và Mục trả về nội dung tương ứng của chúng, sử dụng thứ tự giống hệt nhau. Thứ tự không liên quan đến trình tự tạo
Ví dụ sau sử dụng thuộc tính Keys để lặp lại tất cả các khóa trong từ điển myDict
Dim a As Variant, b As String
a = myDict.Keys
For Each b In a
MsgBox[myDict.Item[b]]
Next b
cộng
Thêm một cặp mục khóa mới vào từ điển. Trả về True nếu thành công
mệnh lệnh. Thêm [phím. str, mục. không tí nào]. bool
Chìa khóa. Giá trị chuỗi được sử dụng để xác định Mục. Khóa không phân biệt chữ hoa chữ thường
mục. Bất kỳ giá trị nào, bao gồm mảng, đối tượng Cơ bản, đối tượng UNO, từ điển, v.v.
Dim NewValue As Variant
myDict.Add["NewKey", NewValue]
Mỗi khóa phải là duy nhất trong cùng một từ điển. Nếu khóa đã tồn tại trong từ điển, DUPLICATEKEYERROR sẽ xuất hiện. Các phím được tạo bằng các ký tự khoảng trắng sẽ gây ra lỗi INVALIDKEYERROR
ConvertToArray
Lưu trữ nội dung của từ điển trong một mảng hai cột dựa trên số không. Các khóa được lưu trữ trong cột đầu tiên và các mục được lưu trữ trong cột thứ hai
Nếu từ điển trống, phương thức này sẽ trả về một Mảng trống
mệnh lệnh. ConvertToArray[]. bất kỳ [0. *, 0. 1]
Dim myDict as Variant
myDict = CreateScriptService["Dictionary"]
myDict.Add["a", 1]
myDict.Add["b", 2]
myDict.Add["c", 3]
Dim arr as Variant
arr = myDict.ConvertToArray[]
'[["a", 1], ["b", 2], ["c", 3]]
Chuyển đổiToJson
Chuyển đổi nội dung của từ điển thành văn bản JSON [Ký hiệu đối tượng JavaScript]
Hạn chế
Phương pháp này hỗ trợ các loại dữ liệu sau. Chuỗi, Boolean, số, Null và Empty. Mảng chứa các mục thuộc các loại đó cũng được cho phép, bất kể kích thước của chúng là bao nhiêu. Ngày được chuyển đổi thành chuỗi, tuy nhiên chúng không thể được sử dụng bên trong Mảng. Các loại dữ liệu khác được chuyển đổi thành biểu diễn chuỗi của chúng bằng SF_String. Dịch vụ đại diện
mệnh lệnh. ConvertToJson[thụt lề. str = ""]. str
thụt vào. Khi thụt lề là một số dương hoặc một văn bản, các phần tử mảng JSON và các thành viên đối tượng được in đẹp với mức thụt đầu dòng đó. Giá trị thụt lề âm sẽ thêm các dòng mới không có thụt lề. Giá trị mặc định là một chuỗi rỗng "" chọn biểu diễn nhỏ gọn nhất. Sử dụng một số nguyên dương để thụt lề thụt vào nhiều khoảng trắng trên mỗi cấp. Khi thụt lề là một chuỗi, chẳng hạn như Chr[9] hoặc Tab[1], ký tự Tab được sử dụng để thụt lề từng cấp
myDict.Add["p0", 12.5]
myDict.Add["p1", "a string àé""ê"]
myDict.Add["p2", DateSerial[2020,9,28]]
myDict.Add["p3", True]
myDict.Add["p4", Array[1,2,3]]
MsgBox myDict.ConvertToJson[]
'{"p0": 12.5, "p1": "a string \u00e0\u00e9\"\u00ea", "p2": "2020-09-28", "p3": true, "p4": [1, 2, 3]}
ConvertToPropertyValues
Lưu trữ nội dung của từ điển vào một mảng PropertyValues
Mỗi mục trong mảng là một com. mặt trời. ngôi sao. đậu. Giá trị tài sản. Key lưu ở Name, item lưu ở Value
Nếu một trong các mục có loại Ngày, nó sẽ được chuyển đổi thành com. mặt trời. ngôi sao. sử dụng. Cấu trúc ngày giờ. Nếu một trong các mục là một mảng trống, nó sẽ được chuyển đổi thành Null. Mảng kết quả trống khi từ điển trống
mệnh lệnh. ConvertToPropertyValues[]. đối tượng [0. *]
________số 8
Lưu ý trong ví dụ bên dưới rằng từ điển Python cần được chuyển làm đối số thứ hai của phương thức CreateScriptService
myDict = dict[]
myDict["Color"] = "Blue"
myDict["Width"] = 30
sfDic = CreateScriptService["Dictionary", myDict]
prop = sfDic.ConvertToPropertyValues[]
Nhiều dịch vụ và phương thức trong thư viện UNO nhận các tham số được biểu diễn bằng cấu trúc PropertyValue, là một phần của API LibreOffice
tồn tại
Xác định xem một khóa có tồn tại trong từ điển hay không
mệnh lệnh. Tồn tại [khóa. str]. bool
Chìa khóa. Chìa khóa được tra cứu trong từ điển
Set myDict = myDict.Dispose[]
0NhậpTừJson
Thêm nội dung của chuỗi JSON [Ký hiệu đối tượng JavaScript] vào từ điển hiện tại. Trả về True nếu thành công
Hạn chế
Chuỗi JSON có thể chứa số, văn bản, booleans, giá trị null và mảng chứa các loại đó. Nó không được chứa các đối tượng JSON cụ thể là từ điển phụ
Một nỗ lực được thực hiện để chuyển đổi văn bản thành ngày nếu mục phù hợp với một trong các mẫu này. YYYY-MM-DD, HH. MM. SS hoặc YYYY-MM-DD HH. MM. SS
mệnh lệnh. ImportFromJson[inputstr. str, ghi đè. bool = Sai]. bool
inputtr. Chuỗi để nhập
ghi đè lên. Khi Đúng, các mục có cùng tên có thể tồn tại trong từ điển và giá trị của chúng bị ghi đè. Khi Sai [mặc định], các phím lặp lại sẽ gây ra lỗi. Xin lưu ý rằng các khóa từ điển không phân biệt chữ hoa chữ thường trong khi các tên phân biệt chữ hoa chữ thường trong các chuỗi JSON
Set myDict = myDict.Dispose[]
1ImportFromPropertyValues
Chèn nội dung của một mảng các đối tượng PropertyValue vào từ điển hiện tại. Tên Thuộc tính Giá trị được sử dụng làm Khóa trong từ điển, trong khi Giá trị chứa các giá trị tương ứng. Trả về True nếu thành công
mệnh lệnh. ImportFromPropertyValues[giá trị thuộc tính. đối tượng [0. *], ghi đè lên. bool = Sai]. bool
giá trị tài sản. Mảng 1 chiều dựa trên số 0 có chứa com. mặt trời. ngôi sao. đậu. đối tượng PropertyValue. Tham số này cũng có thể là một đối tượng giá trị thuộc tính duy nhất không có trong Mảng
ghi đè lên. Khi Đúng, các mục có cùng tên có thể tồn tại trong từ điển và giá trị của chúng bị ghi đè. Khi Sai [mặc định], các phím lặp lại sẽ gây ra lỗi. Lưu ý rằng các khóa từ điển không phân biệt chữ hoa chữ thường trong Cơ bản, trong khi các tên phân biệt chữ hoa chữ thường trong các bộ giá trị thuộc tính và trong từ điển Python
Các ví dụ bên dưới trước tiên tạo một mảng có hai đối tượng PropertyValue, sau đó chuyển đổi nó thành một từ điển
Set myDict = myDict.Dispose[]
2
Set myDict = myDict.Dispose[]
3Mục
Truy xuất một mục từ điển hiện có dựa trên khóa của nó. Trả về giá trị của item nếu thành công, ngược lại trả về Empty
mệnh lệnh. Mục [chìa khóa. str]. không tí nào
Chìa khóa. Không phân biệt chữ hoa chữ thường. Phải tồn tại trong từ điển, nếu không sẽ xảy ra lỗi UNKNOWNKEYERROR
Ví dụ sau lặp lại tất cả các khóa trong từ điển và sử dụng phương thức Item để truy cập các giá trị của chúng
Set myDict = myDict.Dispose[]
4Loại bỏ
Xóa một mục từ điển hiện có dựa trên khóa của nó. Trả về True nếu thành công
mệnh lệnh. Xóa [phím. str]. bool
Chìa khóa. Không phân biệt chữ hoa chữ thường. Phải tồn tại trong từ điển, nếu không sẽ xảy ra lỗi UNKNOWNKEYERROR
Set myDict = myDict.Dispose[]
5Xoá bỏ hết
Loại bỏ tất cả các mục từ từ điển. Trả về True nếu thành công
mệnh lệnh. Xoá bỏ hết[]. bool
Set myDict = myDict.Dispose[]
6ReplaceItem
Thay thế một giá trị mục hiện có dựa trên khóa của nó. Trả về True nếu thành công
mệnh lệnh. ReplaceItem[key. str, giá trị. không tí nào]. bool
Chìa khóa. Giá trị chuỗi đại diện cho khóa có giá trị sẽ được thay thế. Không phân biệt chữ hoa chữ thường. Nếu khóa không tồn tại trong từ điển, lỗi UNKNOWNKEYERROR sẽ xuất hiện
giá trị. Giá trị mới của mục được tham chiếu với tham số chính
Set myDict = myDict.Dispose[]
7Thay thế phím
Thay thế một khóa hiện có trong từ điển bằng một khóa mới. Giá trị vật phẩm không thay đổi. Trả về True nếu thành công
mệnh lệnh. ReplaceKey[phím. str, giá trị. str]. bool
Chìa khóa. Giá trị chuỗi đại diện cho khóa được thay thế. Không phân biệt chữ hoa chữ thường. Nếu khóa không tồn tại trong từ điển, lỗi UNKNOWNKEYERROR sẽ xuất hiện
giá trị. Giá trị chuỗi cho khóa mới. Không phân biệt chữ hoa chữ thường. Nếu khóa mới đã tồn tại trong từ điển, lỗi DUPLICATEKEYERROR sẽ xuất hiện
Set myDict = myDict.Dispose[]
8Tất cả các quy trình hoặc mã định danh cơ bản của ScriptForge có tiền tố là ký tự gạch dưới "_" được dành riêng cho mục đích sử dụng nội bộ. Chúng không có nghĩa là được sử dụng trong Macro cơ bản hoặc tập lệnh Python