在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);
...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用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建立数组
内容概要:本文针对当前车辆诊断系统存在的诊断需求不统一、DID&DTC分配混乱、刷新流程不规范、沟通效率低及数据分散等问题,提出通过制定统一的诊断刷新规范并构建诊断需求管理平台的解决方案。方案旨在建立标准化的诊断框架与需求模板,开发集需求管理、数据分配、流程监控于一体的统一平台,并推行规范化诊断刷新流程,从而实现需求变更减少80%、设计冲突排查时间降低90%、沟通协调时间减少50%等目标,最终提升研发效率、降低研发与售后成本、缩短产品上市周期。; 适合人群:汽车电子系统工程师、诊断开发人员、ECU供应商技术人员、项目管理人员及企业战略决策者;适用于从事车辆诊断系统设计、开发、测试及相关管理工作的专业人员。; 使用场景及目标:①用于指导企业建立统一的车辆诊断规范体系与数字化管理平台;②解决多供应商环境下诊断数据冲突与集成难题;③优化诊断刷新流程以提升安全性与效率;④降低整车研发成本并加速产品上市进程; 阅读建议:此文档兼具技术方案与商业价值分析,建议结合实施计划与预算章节进行全流程理解,重点关注规范制定、平台功能设计与跨团队协同机制,在实际项目分阶段推进试点与落地。
【论文复现】一种基于价格弹性矩阵的居民峰谷分时电价激励策略【需求响应】(Matlab代码实现)内容概要:本文介绍了一种基于价格弹性矩阵的居民峰谷分时电价激励策略,旨在通过需求响应机制优化电力系统负荷分布,提升电网运行效率。该研究利用Matlab进行仿真与代码实现,构建价格弹性模型,分析居民用户在不同电价时段下的用电行为响应,进而制定合理的峰谷电价方案,引导用户错峰用电,缓解高峰负荷压力。文详细阐述了模型构建过程、算法实现逻辑及仿真结果分析,验证了该策略在促进负荷均衡和提升电力系统经济性方面的有效性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的高校学生、科研人员及从事需求响应、能源管理等相关领域的工程技术人员。; 使用场景及目标:①研究居民用电行为与电价之间的响应关系;②设计并仿真基于价格弹性的分时电价激励策略;③实现需求响应在电力系统优化调度的具体应用;④为电力部门制定科学合理的电价政策提供技术支持与决策参考。; 阅读建议:建议读者结合Matlab代码逐段理解模型实现细节,重点关注价格弹性矩阵的构建方法与需求响应模型的仿真流程,同时可参照文案例进行复现实验,加深对理论与算法应用的理解。
【复现】基于改进秃鹰算法的微电网群经济优化调度研究(Matlab代码实现)内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度研究”展开,重点介绍了利用改进秃鹰算法(Bald Eagle Search Algorithm, BES)对微电网群进行经济优化调度的Matlab代码实现方法。该研究旨在解决微电网系统多能源协调、运行成本最小化与供电可靠性之间的平衡问题,通过引入算法改进策略提升寻优能力与收敛速度,有效应对微电网可再生能源出力波动性和负荷不确定性带来的调度挑战。文详细阐述了微电网群的系统架构、目标函数构建、约束条件设定以及改进算法的应用流程,并通过仿真实验验证了其在降低运行成本、提高能源利用效率方面的优越性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事微电网、智能电网优化调度相关工作的工程技术人员,尤其适合正在开展能源优化、智能算法应用研究的研究者。; 使用场景及目标:①用于微电网群多目标经济调度模型的构建与求解;②作为智能优化算法(如秃鹰算法)改进与应用的学习案例;③支撑科研论文复现、算法对比实验及实际项目的能源管理系统开发。; 阅读建议:建议结合提供的Matlab代码进行同步调试与仿真,重点关注目标函数设计、约束处理方式与算法改进机制,同时可将其与其他智能算法(如粒子群、遗传算法)进行对比分析,深化对优化调度问题求解路径的理解。

5,930

社区成员

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

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