变体与安全数组

(vlax-make-variant) ;;创建一个未初始化的变体

;;01.整型值变体
(setq myvar (vlax-make-variant 10)) ;;创建整型值变体,返回 #<variant 3 10>
(vlax-variant-type myvar) ;;获取变体类型,返回 3
(vlax-variant-value myvar) ;;获取变体中的值 ,返回10

;;02.双精度值型变体
(setq myvar2 (vlax-make-variant 10.2)) ;;返回 #<variant 5 10.2>
(vlax-variant-type myvar2) ;;获取变体类型,返回 5
(vlax-variant-value myvar2) ;;获取变体中的值 ,返回10.2

;;03.字符串值型变体
(setq myvar3 (vlax-make-variant "10string")) ;;返回 #<variant 8 10string>
(vlax-variant-type myvar3) ;;获取变体类型,返回 8
(vlax-variant-value myvar3) ;;获取变体中的值 ,返回"10string"

;;04.存储双精度值二维安全数组类型的变体
(setq dbArray (vlax-make-safearray vlax-vbDouble ‘(0 . 3) ‘(1 . 2))) ;;创建安全数组,返回 #<safearray...>
(vlax-safearray-fill dbArray ‘((1 2) (3 4) (5 6) (7 8))) ;;使用fill函数给变体一次性赋值,返回 #<safearray...>
(setq mydbSaVar (vlax-make-variant dbArray )) ;;用安全数组创建变体,返回 #<variant 8197 ...>
(vlax-variant-type mydbSaVar) ;;获取变体类型,返回 8197
(setq mydbArray (vlax-variant-value mydbSaVar)) ;;获取变体值,返回 #<safearray...>
(vlax-safearray->list mydbArray) ;;将安全数组以表的形式返回,返回 ((1.0 2.0) (3.0 4.0) (5.0 6.0) (7.0 8.0))
(vlax-safearray-get-dim mydbArray) ;;安全数组的维数,返回 2
(vlax-safearray-get-l-bound mydbArray 1) ;;安全数组指定维度的下界,返回0
(vlax-safearray-get-u-bound mydbArray 2) ;安全数组指定维度的上界,返回2
;;要点:
;;创建数组的时候要指定存储数据的类型
;;维度的维数,维度下界和上界,数组元素和维度的对应
;;用fill时,数组一定要填满

;;05.存储字符串值二维安全数组类型的变体
(setq strArray (vlax-make-safearray vlax-vbString ‘(1 . 3) ‘(1 . 2))) ;;创建安全数组,返回 #<safearray...>
(vlax-safearray-put-element strArray 1 1 "Hello") ;;给数组元素赋值,使用put函数,返回 "Hello"
(vlax-safearray-put-element strArray 2 2 "HaHaHa") ;;给数组元素赋值,使用put函数,返回 "HaHaHa"
(setq myStrSaVar (vlax-make-variant strArray )) ;;用数组创建变体,返回 #<variant 8200 ...>
(vlax-variant-type myStrSaVar) ;;获取变体类型,返回 8200
(setq mystrArray (vlax-variant-value myStrSaVar)) ;;获取变体值,返回 #<safearray...>
(vlax-safearray-get-element mystrArray 1 1) ;;获取下标为1 1的数组元素,返回 "Hello"
(vlax-safearray->list mystrArray) ;;将安全数组以表的形式返回,返回 (("Hello" "") ("" "HaHaHa") ("" ""))

时间: 2024-11-06 14:36:06

变体与安全数组的相关文章

Delphi 变体数组

Format 函数 Delphi 支持“开参数”和动态数组,变体数组,使用时的语法类似 Delphi 中的集合:采用两个方括号把不同类型的变量括起来(这太方便了啊),也可以采用声明一个 TVarRec 类型的数组来容纳不同的类型变量(具体请参阅其帮助文档) Format函数声明比较 function Format(const Format: string; const Args: array of const): string; overload; extern DELPHI_PACKAGE U

labview 变体

变体数据类型是LabVIEW中多种数据类型的容器.将其它数据转换为变体时,变体将存储数据和数据的原始类型,保证日后可将变体数据反向转换. 例如,如将字符串数据转换为变体,变体将存储字符串的文本,以及说明该数据是从字符串(而不是路径.字节数组或其它LabVIEW数据类型)转换而来的信息. 变体函数可用于创建和操作变体数据.可将平化数据和LabVIEW数据转化为变体数据,或将变体数据转化为LabVIEW数据. 变体数据类型可存储数据的属性.属性是定义的数据及变体数据类型所存储的数据的信息. 例如,如

[转]Delphi 变体类型(Variant)的介绍(流与变体类型的相互转换、变体类型常用的函数)

Delphi 变体类型(Variant)的介绍(流与变体类型的相互转换.变体类型常用的函数) 一.变体类型常用的函数介绍: Variant: 一种可以拥有各种数据类型: 也可以告诉目前存储的数据是什么类型(通过使用VarType函数): 可以给相同的Variant分配不同的数据类型,只要Variant包含数字值就可以执行算法: variant数组只不过是variant型的数组,不必包含同类型的数据: 1.  VarArrayOf函数:更快捷的创建一维变体数组,可以创建全异的数值数组: funct

Delphi 变体类型(Variant)的介绍(流与变体类型的相互转换、变体类型常用的函数)

来源:http://blog.csdn.net/xiongmao000738/article/details/6863988 一.变体类型常用的函数介绍: Variant: 一种可以拥有各种数据类型: 也可以告诉目前存储的数据是什么类型(通过使用VarType函数): 可以给相同的Variant分配不同的数据类型,只要Variant包含数字值就可以执行算法: variant数组只不过是variant型的数组,不必包含同类型的数据: 1.  VarArrayOf函数:更快捷的创建一维变体数组,可以

从头认识java-18.2 基本的线程机制(6)-使用构造器或者内部类来实现多线程的编码变体

这一章节我们来讨论一下使用构造器或者内部类来实现多线程的编码变体. 1.基础实现 package com.ray.ch17; public class Test { public static void main(String[] args) { Thread thread1 = new ExtendsThread(); thread1.start(); Thread thread2 = new Thread(new ImplRunnable()); thread2.start(); } } c

变体(协变与逆变)

变体的引入是为了提高泛型类型的变量在赋值时可以对类型进行兼容性转换,以扩展泛型的灵活性.下面看个例子: public delegate void DoWork<T>(T arg); ........ DoWork<A> del1=delegate(A arg){//.......}; DoWork<B> del2=del1; B bb=new B(); del2(bb); 其中A ,B是两个类,B类继承A类,即:public class A{.....}        

Android Studio下项目构建的Gradle配置及打包应用变体

Gradle简介 ??Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑.具有语法简洁.可读性强.配置灵活等特点.基于Intellij IDEA社区版本开发的Android Studio天生支持Gradle构建程序.Groovy是一种基于JVM的敏捷开发语言,结合了Phthon.Ruby和Smalltalk的许多强大特性.同时,Groovy代码既能够与java代码很好地结合,也能够用于扩展现有的代码. Grad

c#中关于结构体和字节数组转化

最近在使用结构体与字节数组转化来实现socket间数据传输.现在开始整理一下.对于Marshal可以查阅msdn,关于字节数组与结构体转代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Runtime.InteropServices; namespace FileSendClient { [StructL

C#结构体和字节数组的转换函数

在通信过程中,一般我们都会操作到字节数组.特别是希望在不同语言编程进行操作的时候. 虽然C#提供了序列化的支持,不用字节数组也行.但操作字节数组肯定会碰到. 一般都会采用结构来表示字节数组.但结构与字节数组直接的转换实在很麻烦. 字节操作不但容易出错,而且每增加一个结构,就自己实现一遍,实在是烦不胜烦. 有没有简单的方法呢?当然有.可以采用非托管区的一些方法来实现. 首先,导入命名空间:System.Runtime.InteropServices; 定义结构的时候,要给结构指定特性. 如: //