在COM的接口方法中能不能用字符串数组,能的话在类型库参数中选择什么Type?不能的话有什么方法替代?如:procedure Tusd_ws.aa(aaa: arr

kingbenz 2004-12-08 05:32:22
在COM的接口方法中能不能用字符串数组,能的话在类型库参数中选择什么Type?不能的话有什么方法替代?如:procedure Tusd_ws.aa(aaa: array of WideString);
...全文
84 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdstyzh01 2004-12-08
  • 打赏
  • 举报
回复
忘了说,在类型库中选择OleVariant类型
gdstyzh01 2004-12-08
  • 打赏
  • 举报
回复
Variant,Variant数组:
Variant是一种可以拥有各种数据类型的变量.只要variant包含数字值就可以在variant上执行算法,或者当一个variant是字符串,另一个variant是个数值时,就有可能把两个variant加起来。使用VarArrayLowBound和VarArrayHighBound来计算variant数组的边界,以及VarArrayDimCount来计算数组的维数.
VarArrayLock和VarArrayUnlock:
Variant一般占据16位字节的内存,使用variant数组会导致性能损失,因此如果需要多次访问variant数组(如当在数组中循环时,可以使用VarArrayLock和VarArrayUnlock加速数组的访问。

VarArrayCreate函数:创建一个变量数组,该方法是比较灵活的。function VarArrayCreate(const Bounds: array of Integer; VarType: TVarType): Variant;其中Bounds给定了数组的上下边界,VarType给定了数组中存储数据的类型。使用该函数时,必须在头文件中加入Variants单元的引用。如果想创建字符串的变量数组,那么使用varOleStr类型。例如:MyIntArray:=VarArrayCreate([1,10],varinteger);如果创建一个二维的数组,则代码如下:MyIntArray:=VarArrayCreate([1,10,1,5],varInteger);这声明了一个数组有10列和5行。
Variant数组的一个最普遍的用途是创建一个variant类型的数组,就像下面这样:MyVarArray:=VarArrayCreate([1,10],varVariant);,这就创建了带有10个variant的数组。然后数组的单个元素就可以装载一个数组:MyVarArray[1]:=VarArrayCreae([1,5],varVariant);

VarArrayOf:可在运行时用于创建一维variant数组,其内部创建variant数组,创建全异的数值数组如下:MyIntArray:=VarArrayOf([‘John’,’Smith’,40,6000.00,’Main Street’]);
moonetra 2004-12-08
  • 打赏
  • 举报
回复
相关函数有:
VarArrayCreate
VarArrayHighBound
VarArrayLowBound
VarArrayDimCount
VarArrayLock
……
moonetra 2004-12-08
  • 打赏
  • 举报
回复
扩展一下 ysai(大海呀,真TM的大) 的意思就是

procedure SomeProc(var AOle: OleVariant);
begin
{创建一个二维字符串数组,第一维从0..100,第二维从0..2}
AOle:= VarArrayCreate([0, 100, 0, 2], varOleStr);
……
end;

然后使用该接口后可以这样:

procedure OtherProc;
var
NewOle: OleVariant;
StrAry: array of array of string;
i, j: Integer;
begin
SomeProc(NewOle);
……
for i:= 0 to 100 do
begin
for j:= 0 to 2 do
begin
StrAry[i, j]:= NewOle[i, j];
end;
end;
end;
ysai 2004-12-08
  • 打赏
  • 举报
回复
用OleVariant类型
VarArrayCreate建立数组
内容概要:该文档为一段用于Google Earth Engine(GEE)平台的JavaScript代码脚本,旨在对研究区域(AOI)内的Landsat 8卫星影像进行土地利用/土地覆盖(LULC)分类。脚本首先筛选2024年云量低于10%的Landsat 8 Level-2地表反射率影像,构建值合成影像并应用缩放因子校正。随后,基于预先定义的水体(Water)和植被(Vegetation)样本点,合并训练样本并提取影像对应波段数据,采用随机森林分类器(smileRandomForest)对影像进行监督分类。最后,通过划分训练集与测试集,输出混淆矩阵、总体分类精度和Kappa系数,完成分类结果的精度评估。; 适合人群:具备遥感图像处理基础知识的科研人员、地理信息系统(GIS)技术人员以及环境监测相关领域的研究生或专业人员;熟悉GEE平台基本操作者更佳; 使用场景及目标:①实现特定区域多光谱遥感影像的土地覆盖分类;②掌握GEE平台上从影像预处理、样本构建、模型训练到精度验证的完整分类流程;③支持水资源管理、生态环境监测等应用领域的空间数据分析; 阅读建议:此资源以实际代码形式呈现,建议结合GEE开发环境边运行边学习,重点关注影像预处理方法、训练样本构建逻辑、分类器参数设置及精度评估指标解读,便于迁移应用于其他区域或传感器数据。

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧