كيف يمكنني اجتياز مجموعة في ASP الكلاسيكي؟
-
08-06-2019 - |
سؤال
أريد أن أكون قادرًا على القيام بما يلي:
For Each thing In things
End For
ASP الكلاسيكي - وليس .NET!
المحلول
مهما كانت [الأشياء] الخاصة بك، فيجب كتابتها خارج VBScript.
في VB6، يمكنك كتابة فئة مجموعة مخصصة, ، فسوف تحتاج إلى التحويل البرمجي إلى ActiveX DLL وتسجيله على خادم الويب الخاص بك للوصول إليه.
نصائح أخرى
شيء من هذا القبيل؟
dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"
For Each x in cars
response.write(x & "<br />")
Next
يرى www.w3schools.com.
إذا كنت تريد ربط المفاتيح والقيم استخدام كائن القاموس بدلاً من:
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
if objDictionary.Exists("Name") then
' Do something
else
' Do something else
end if
أقرب ما ستحصل عليه هو استخدام القاموس (كما ذكر باسيفيكا)
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
لكنني أتصفح قواميسي مثل المجموعة
For Each Entry In objDictionary
Response.write objDictionary(Entry) & "<br />"
Next
يمكنك تكرار القاموس بأكمله بهذه الطريقة لكتابة القيم التي ستبدو كما يلي:
Scott
20
يمكنك أيضًا القيام بذلك
For Each Entry In objDictionary
Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next
والتي من شأنها أن تنتج
Name: Scott
Age: 20
إحدى الطرق التي استخدمتها من قبل هي استخدام إحدى خصائص المجموعة التي تُرجع مصفوفة، والتي يمكن تكرارها.
Class MyCollection
Public Property Get Items
Items = ReturnItemsAsAnArray()
End Property
...
End Class
كرر مثل:
Set things = New MyCollection
For Each thing in things.Items
...
Next
كما قال بريت، من الأفضل استخدام مكون vb لإنشاء المجموعات.لا يتم استخدام كائنات القاموس بشكل شائع في ASP إلا في حالة التطبيقات القائمة على الاحتياجات المحددة.
كن حذرًا جدًا عند استخدام كائن قاموس VB Script!
فقط اكتشف هذا "التنشيط التلقائي"الشيء الأصلي على هذا الكائن: http://en.wikipedia.org/wiki/Autovivification
لذلك، عندما تحتاج إلى مقارنة القيم، لا تستخدم مطلقًا مقارنة منطقية مثل:
If objDic.Item("varName") <> "" Then
...
هذا سوف تلقائيا أضف المفتاح "varName
" إلى القاموس (إذا لم يكن موجودًا، بقيمة فارغة) لمواصلة تقييم التعبير المنطقي.
إذا لزم الأمر، استخدم بدلا من ذلك If objDic.Exists("varName")
.
ما عليك سوى قضاء بضعة أيام في طرق الجدران باستخدام برنامج Microsoft هذا "ميزة"...
كائن-قاموس-vbscript-إنشاء-مفتاح-لم يكن موجودًا من قبل ولكنه موجود-في-كائن آخر