ভিবিএতে হ্যাশ টেবিল বা এসোসিয়েটিভ অ্যারে কীভাবে তৈরি করা যায় তা ব্যাখ্যা করার জন্য আমি নথির সন্ধান পাই না। এটা কি সম্ভব?
আপনি কি কোনও নিবন্ধের সাথে লিঙ্ক করতে পারেন বা আরও ভাল কোড পোস্ট করতে পারেন?
ভিবিএতে হ্যাশ টেবিল বা এসোসিয়েটিভ অ্যারে কীভাবে তৈরি করা যায় তা ব্যাখ্যা করার জন্য আমি নথির সন্ধান পাই না। এটা কি সম্ভব?
আপনি কি কোনও নিবন্ধের সাথে লিঙ্ক করতে পারেন বা আরও ভাল কোড পোস্ট করতে পারেন?
উত্তর:
আমার মনে হয় আপনি মাইক্রোসফ্ট স্ক্রিপ্টিং রানটাইম লাইব্রেরিতে পাওয়া অভিধানের সন্ধান করছেন। (সরঞ্জামগুলির থেকে আপনার প্রকল্পের একটি রেফারেন্স যুক্ত করুন ... ভিবিইতে রেফারেন্স মেনু)
এটি ভেরিয়েন্টের সাথে মানিয়ে নিতে পারে এমন কোনও সাধারণ মানের সাথে কাজ করে (কীগুলি অ্যারে হতে পারে না, এবং সেগুলিকে বস্তু তৈরি করার চেষ্টা করা কোনও অর্থবোধ করে না below নীচের @ নাইলের মন্তব্য দেখুন)):
Dim d As dictionary
Set d = New dictionary
d("x") = 42
d(42) = "forty-two"
d(CVErr(xlErrValue)) = "Excel #VALUE!"
Set d(101) = New Collection
আপনার প্রয়োজনীয়তা আরও সহজ এবং আপনি কেবল স্ট্রিং কীগুলি চাইলে আপনি ভিবিএ সংগ্রহ অবজেক্টটিও ব্যবহার করতে পারেন।
আমি জানি না হয় আসলে কিছু আছে কি না, সুতরাং আপনার যদি হ্যাশ টেবিলের মতো পারফরম্যান্সের প্রয়োজন হয় তবে আপনি আরও খনন করতে পারেন। (সম্পাদনা: স্ক্রিপ্টিং। ডিকোরিয়ালিটি অভ্যন্তরীণভাবে একটি হ্যাশ টেবিল ব্যবহার করে )
Empty
। আমি সেই অনুযায়ী উত্তর সম্পাদনা করেছি।
আমি অতীতে বহুবার ফ্রান্সেস্কো বেলেনার হ্যাশ টেবিল ক্লাস ব্যবহার করেছি যখন কোনও সংগ্রহ বা অভিধান পুরোপুরি ফিট ছিল না এবং আমার কেবল হ্যাশ টেবিলের প্রয়োজন ছিল।
অভিধান অবজেক্ট বা সংগ্রহ অবজেক্টটি ব্যবহার করে দেখুন।
http://visualbasic.ittoolbox.com/documents/d অভিধান-object-vs-collection-object-12196
এখানে আমরা যাচ্ছি ... কেবলমাত্র কোনও মডিউলটিতে কোডটি অনুলিপি করুন, এটি ব্যবহারের জন্য প্রস্তুত
Private Type hashtable
key As Variant
value As Variant
End Type
Private GetErrMsg As String
Private Function CreateHashTable(htable() As hashtable) As Boolean
GetErrMsg = ""
On Error GoTo CreateErr
ReDim htable(0)
CreateHashTable = True
Exit Function
CreateErr:
CreateHashTable = False
GetErrMsg = Err.Description
End Function
Private Function AddValue(htable() As hashtable, key As Variant, value As Variant) As Long
GetErrMsg = ""
On Error GoTo AddErr
Dim idx As Long
idx = UBound(htable) + 1
Dim htVal As hashtable
htVal.key = key
htVal.value = value
Dim i As Long
For i = 1 To UBound(htable)
If htable(i).key = key Then Err.Raise 9999, , "Key [" & CStr(key) & "] is not unique"
Next i
ReDim Preserve htable(idx)
htable(idx) = htVal
AddValue = idx
Exit Function
AddErr:
AddValue = 0
GetErrMsg = Err.Description
End Function
Private Function RemoveValue(htable() As hashtable, key As Variant) As Boolean
GetErrMsg = ""
On Error GoTo RemoveErr
Dim i As Long, idx As Long
Dim htTemp() As hashtable
idx = 0
For i = 1 To UBound(htable)
If htable(i).key <> key And IsEmpty(htable(i).key) = False Then
ReDim Preserve htTemp(idx)
AddValue htTemp, htable(i).key, htable(i).value
idx = idx + 1
End If
Next i
If UBound(htable) = UBound(htTemp) Then Err.Raise 9998, , "Key [" & CStr(key) & "] not found"
htable = htTemp
RemoveValue = True
Exit Function
RemoveErr:
RemoveValue = False
GetErrMsg = Err.Description
End Function
Private Function GetValue(htable() As hashtable, key As Variant) As Variant
GetErrMsg = ""
On Error GoTo GetValueErr
Dim found As Boolean
found = False
For i = 1 To UBound(htable)
If htable(i).key = key And IsEmpty(htable(i).key) = False Then
GetValue = htable(i).value
Exit Function
End If
Next i
Err.Raise 9997, , "Key [" & CStr(key) & "] not found"
Exit Function
GetValueErr:
GetValue = ""
GetErrMsg = Err.Description
End Function
Private Function GetValueCount(htable() As hashtable) As Long
GetErrMsg = ""
On Error GoTo GetValueCountErr
GetValueCount = UBound(htable)
Exit Function
GetValueCountErr:
GetValueCount = 0
GetErrMsg = Err.Description
End Function
আপনার ভিবি (এ) অ্যাপে ব্যবহার করতে:
Public Sub Test()
Dim hashtbl() As hashtable
Debug.Print "Create Hashtable: " & CreateHashTable(hashtbl)
Debug.Print ""
Debug.Print "ID Test Add V1: " & AddValue(hashtbl, "Hallo_0", "Testwert 0")
Debug.Print "ID Test Add V2: " & AddValue(hashtbl, "Hallo_0", "Testwert 0")
Debug.Print "ID Test 1 Add V1: " & AddValue(hashtbl, "Hallo.1", "Testwert 1")
Debug.Print "ID Test 2 Add V1: " & AddValue(hashtbl, "Hallo-2", "Testwert 2")
Debug.Print "ID Test 3 Add V1: " & AddValue(hashtbl, "Hallo 3", "Testwert 3")
Debug.Print ""
Debug.Print "Test 1 Removed V1: " & RemoveValue(hashtbl, "Hallo_1")
Debug.Print "Test 1 Removed V2: " & RemoveValue(hashtbl, "Hallo_1")
Debug.Print "Test 2 Removed V1: " & RemoveValue(hashtbl, "Hallo-2")
Debug.Print ""
Debug.Print "Value Test 3: " & CStr(GetValue(hashtbl, "Hallo 3"))
Debug.Print "Value Test 1: " & CStr(GetValue(hashtbl, "Hallo_1"))
Debug.Print ""
Debug.Print "Hashtable Content:"
For i = 1 To UBound(hashtbl)
Debug.Print CStr(i) & ": " & CStr(hashtbl(i).key) & " - " & CStr(hashtbl(i).value)
Next i
Debug.Print ""
Debug.Print "Count: " & CStr(GetValueCount(hashtbl))
End Sub