Вариант түрі - Variant type - Wikipedia

Нұсқа Бұл деректер түрі кейбір бағдарламалау тілдерінде, атап айтқанда Visual Basic, OCaml,[1] Delphi және C ++ пайдалану кезінде Компонент нысаны моделі.

Visual Basic-те (және Қолданбаларға арналған Visual Basic ) Variant мәліметтер типі a белгіленген одақ кез келген басқа деректер түрін ұсыну үшін пайдаланылуы мүмкін (мысалы, бүтін, өзгермелі нүкте, жалғыз - және екі есе - дәлдік, объект және т.б.) белгіленген ұзындықтағы жол түрінен және жазба түрлері. Visual Basic-те кез-келген айнымалы анық жарияланбаған немесе оның түрі айқын жарияланбаған, ол нұсқа ретінде қабылданады.

Айқын түрде жарияланбаған нұсқаларды қолдануға кеңес берілмегенімен, олар қажет деректер типі тек жұмыс уақытында белгілі болған кезде, деректер түрінің өзгеруі күтілгенде немесе қосымша параметрлер мен параметрлер массивтері қажет болғанда қолданыла алады. Іс жүзінде а динамикалық типті жүйе көбінесе тек айнымалылар үшін қол жетімді түр.

Ішіндегі маңызды өзгерістердің қатарында Visual Basic .NET.NET тілі бола тұра, нұсқаның түрі .NET-ке ауыстырылды объект түрі. Тұжырымдамада ұқсастықтар бар, сонымен қатар үлкен айырмашылықтар бар, және осы екі типтің арасында тікелей конверсия болмайды. Айырбастау үшін, егер Visual Basic .NET коды Visual Basic 6 COM объектісімен өзара әрекеттесу кезінде қажет болса, әдеттегі әдіснаманы қолдану қажет .NET маршелингі.

Байланысты емес қолданыста нұсқа түрі а сілтеме жасау үшін де қолданылады мәліметтердің алгебралық түрі (a-мен салыстыруға болады белгіленген одақ ), оның конструкторлары жиі аталады нұсқалары. Сияқты тілдерде OCaml және Хаскелл, вариант түрінің бұл түрі көптеген мәліметтер құрылымын ұсынуға арналған стандартты тілдік блок болып табылады.

Мысалдар

Visual Basic-те А атты нұсқаны осы екі мысалда көрсетілгендей етіп жариялауға болады:

Күңгірт AКүңгірт A сияқты Нұсқа

Жылы Delphi, А нұсқасы келесі жолмен жарияланады:

var A: нұсқа;

Пішім

Нұсқа түрінің айнымалысы, қысқалығы үшін «нұсқа» деп аталады, Visual Basic-те анықталған, 16 байтты сақтау қажет және оның орналасуы келесідей:

ОфсеттікӨлшеміСипаттама
02VarType қайтарған мән; нұсқада қандай мәліметтер бар екенін анықтайды.
26Сақталған байттар; нөлге теңестіру керек.
88-ге дейінНұсқада мәліметтер бар.

Түрлері

Visual Basic-те кездесетін бірнеше нұсқалар келтірілген. Басқа тілдерде нұсқалардың басқа түрлерін де қолдануға болады.

VarTypeАлтылықЖақсы түріЖақсы мүшеNameNameДеректер байттарыC және C ++ типтері
00x00VT_EMPTYЖоқБос1
10x01VT_NULLЖоқЖоқ2
20x02VT_I2iValБүтін2A00ҚЫСҚА
30x03VT_I4lValҰзақ2A000000ҰЗАҚ
40x04VT_R4fltValБойдақ00002842ФЛОТ
50x05VT_R8dblValҚосарланған0000000000004540ЕКІ
60x06VT_CYcyValВалютаA068060000000000CY құрылымы
70x07VT_DATEкүнКүні00000000C0D5E140DATE (екі есе)
80x08VT_BSTRbstrValЖолххххххх(BSTR) :( OLECHAR *) :( WCHAR *) :(wchar_t *)
90x09VT_DISPATCHpdispVal
100x0aVT_ERRORскодҚате2A000A80HRESULT (ұзақ int)
110x0bVT_BOOLboolValБульFFFFVARIANT_BOOL (қысқа)
120x0cVT_VARIANTpvarValНұсқаНҰСҚА
130x0dVT_UNKNOWNпанкВалЕштеңе жоқ400000000IU белгісіз *
140x0eVT_DECIMALөшіруОНДЫҚ
160x10VT_I1cValБайтҚАРСЫ
170x11VT_UI1bValБайтBYTE (қол қойылмаған карта)
180x12VT_UI2uiValWORD (қол қойылмаған қысқа)
190x13VT_UI4ульвалDWORD (unsigned int)
200x14VT_I8hVal
210x15VT_UI8uhVal
220x16VT_INTintVal
230x17VT_UINTuintVal
240x18VT_VOID
250x19VT_HRESULTЖоқ380020004HRESULT (ұзақ int)
260x1aVT_PTR
270x1bVT_SAFEARRAYпарра
280x1cVT_CARRAY
290х1дVT_USERDEFINED
300x1eVT_LPSTRpszVal
310x1fVT_LPWSTRpwszVal
360x24VT_RECORD
370x25VT_INT_PTRpintVal
380x26VT_UINT_PTRpuintVal
81920x2000VT_ARRAYпарра
9Нысанға сілтеме5хххххххБелгісіз *
  • 1 Инициализацияланбаған нұсқа түрі.
  • 2 Деректер қорындағы NULL мәнінің типі, яғни инициализацияланбаған немесе C ++ мәніне тең емес нөл көрсеткіш.
  • 3 Жоқ дәлелдер - бұл нақты «қате параметрі» деген қате мәні.
  • 4 Нөлге сілтеме орнатылған нысан түрі.
  • 5 TypeName құрамындағы объектінің атын қайтарады. Деректер интерфейс көрсеткіш, яғни көрсеткішті а-ға көрсететін көрсеткіш виртуалды әдіс кестесі (бұл функция көрсеткіштерінің жиымы).

Жалпы қолданыстар

Жинақтар

The Жинақ сынып OLE автоматика әр түрлі типтегі элементтерді сақтай алады. Бұл элементтердің мәліметтер типі компиляция кезінде белгілі бола алмайтындықтан, элементтерді элементтерге қосу және оларды коллекциядан алу әдістері нұсқаларын қолданады. Егер Visual Basic-те Әрқайсысы үшін construct қолданылады, итератор айнымалысы нысан түріне немесе нұсқаға ие болуы керек.

Диспетчерлік әдіс бойынша қоңыраулар

OLE автоматика жүйесінде IDispatch интерфейс объектінің класын алдын-ала білу мүмкін болмаған кезде қолданылады. Демек, мұндай объектіге әдісті шақыру кезінде аргументтер типтері және қайтарылатын мән компиляция кезінде белгілі болмайды. Дәлелдер варианттар массиві ретінде беріледі және қоңырау аяқталғаннан кейін нұсқа қайтарылады.

Қосымша параметрлер

Visual Basic-те процедураның аргументін префикстің көмегімен префикстің көмегімен қосымша деп жариялауға болады Қосымша кілт сөз. Дәлел алынып тасталған кезде Visual Basic процедураға арнайы мәнді шақырады, оны шақырады Жоқ аргументтің жоқтығын көрсететін жоғарыдағы кестеде. Мән берілген мән немесе арнайы мән болуы мүмкін болғандықтан, нұсқаны қолдану керек.

Функция GetText(Қосымша ByVal Көрсеткіш) Қалай Жол    Егер Жіберу(Көрсеткіш) Содан кейін        GetText = Тармақ(CurrentItem)    Басқа        GetText = Тармақ(Көрсеткіш)    Соңы ЕгерСоңы Функция

Сол сияқты кілт сөз ParamArray барлық келесі аргументтерді вариант массивінде беру үшін қолдануға болады.

Сондай-ақ қараңыз

Әдебиеттер тізімі

Сыртқы сілтемелер