كيف يمكنني اجتياز مجموعة في ASP الكلاسيكي؟

StackOverflow https://stackoverflow.com/questions/2300

  •  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-إنشاء-مفتاح-لم يكن موجودًا من قبل ولكنه موجود-في-كائن آخر

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top