| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > safearray и variant

safearray и variant

Ответ
Поиск в этой теме
Непрочитано 02.12.2005, 11:29 #1
safearray и variant
Apelsinov
 
Проектировщик ВК. LISP-любитель.
 
Москва
Регистрация: 15.12.2003
Сообщений: 1,189

Господа, вопрос чисто теоретический.
Объясните, кто силен в программировании, что такое за объект safearray и что такое variant.
я могу тупо пользоваться методами их создания и использования (к примеру создание массива (а что такое массив?) точек при создании полилинии), но что это такое- не могу понять, а хотелось бы. Можно это объяснить нормальным человеческим языком? Или может почитать где?
Просмотров: 6350
 
Непрочитано 02.12.2005, 11:46
#2
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Насколько я рпонимаю, Safearray - это многомерный индексированный список однотипных элементов. "These arrays are safe because you cannot accidentally assign values outside the array bounds and cause a data exception to occur." Variant же - буржуазное измышление предназначенное якобы для работы с Safearray, а на самом деле - для того, чтобы отвлекать рабочих от классовой борьбы.
Вообще же я плохо представляю, когда нужно пользоваться Safearray of Variants, а когда Variants containing Safearrays.
Лентяй вне форума  
 
Непрочитано 02.12.2005, 12:03
#3
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Про массив:
Цитата:
array
1. массив # в программировании - переменная, состоящая из конечного набора однотипных последовательно проиндексированных элементов данных, имеющих общее имя. Массив характеризуется типом элементов (data type), из которых он состоит, размерностью (dimension) и числом элементов. К каждому элементу возможен прямой доступ указанием его индексов. Изменение одного элемента массива не влияет на остальные элементы. Одномерный массив называется вектором (vector), а двумерный - матрицей. Существует два метода хранения массивов в памяти: с развёрткой по строкам (элементы массива запоминаются строка за строкой) и, соответственно, с развёрткой по столбцам (см. adjustable array, byte array, dynamic array, matrix, multidimensional array, ragged array, subarray);
2. совокупность, набор, массив одинаковых элементов;
3. см. disk array.
AY вне форума  
 
Непрочитано 03.12.2005, 22:22 Re: safearray и variant
#4
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Apelsinov
Господа, вопрос чисто теоретический.
Объясните, кто силен в программировании, что такое за объект safearray и что такое variant.
я могу тупо пользоваться методами их создания и использования (к примеру создание массива (а что такое массив?) точек при создании полилинии), но что это такое- не могу понять, а хотелось бы. Можно это объяснить нормальным человеческим языком? Или может почитать где?
Safearray - "безопасный" массив. Не вдаваясь в технические детали только скажу, что "безопасные" массивы организованы так внутри, чтобы из программ, написанных на разных языках можно было бы обращаться к их элементам. Сделано, в частности, для использования COM-технологий. Соответственно и приходится в LISP преобразовывать списки в "безопасные" массивы.

Variant - тип данных, которые (данные) могут иметь разный тип. В LISP переменная может иметь любой тип и изменять его во время исполнения. В типизированных языках тип данных для переменной объявляется заранее и не может изменяться. Но иногда неизвестно, какой тип данных будет передан во время исполнения. Вот для этого и применяются Variant. Но их применение стараются ограничивать, так как расходуется больше памяти и усложняется работа. Время обращения к массиву типа Variant значительно больше, чем к обычному массиву в каком-то языке.

Это - очень упрощенно. А если подробно - в любой книге по программированию.
ShaggyDoc вне форума  
 
Непрочитано 03.12.2005, 23:44
#5
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Если касательно самой записи этих функций, то
variant, safearray, variant-value - всего навсего
сокращенная форма соответствующих "длинных"

I.e.:
Код:
[Выделить все]
	       
(setq vect1 (variant
	     (vlax-safearray-fill
	       (safearray vlax-vbdouble '(0 . 2))
			   '(1. 1. 1.))))

(setq vect2 (vlax-make-variant 
	     (vlax-safearray-fill
	       (vlax-make-safearray vlax-vbdouble '(0 . 2))
			   '(1. 1. 1.))))
; TesT :

(equal (vlax-safearray->list (variant-value vect1))
	(vlax-safearray->list (variant-value vect2))
	1e-15); => T
:roll:
fixo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > safearray и variant

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск