Delphi var参数设置长度来自程序内部
发布时间:2020-12-15 09:07:23 所属栏目:大数据 来源:网络整理
导读:我试图将一些字符串传递给动态字符串数组,在这种情况下它正在工作: procedure DoSomeThing(in_cmd: string; var out_strs: array of string);begin .. for n := low(out_strs) to high(out_strs) do begin out_strs[n] :='bla bla'; end;end; 在应用程序中
我试图将一些字符串传递给动态字符串数组,在这种情况下它正在工作:
procedure DoSomeThing(in_cmd: string; var out_strs: array of string); begin .. for n := low(out_strs) to high(out_strs) do begin out_strs[n] :='bla bla'; end; end; 在应用程序中使用as: . . . SetLength(my_out_str,sizer); DoSomeThing('do it now',my_out_str); . . 但我想在程序中使用my_out_str的SetLength. 解决方法
是的,这是可能的,但您必须使用先前定义的动态数组类型声明参数.你目前正在使用
open array.
type TStrDynArray = array of string; procedure DoSomeThing(in_cmd:string; var out_strs: TStrDynArray); begin SetLength(out_strs,2 * Length(inn_cmd)); ... 或者,使用TArray< string>如果有可用的泛型(来自Delphi 2009) procedure DoSomeThing(in_cmd:string; var out_strs: TArray<string>); begin SetLength(out_strs,2 * Length(inn_cmd)); 原因是一个上下文中的x数组与另一个上下文中的x数组不同. 在类型声明中 type TDynamicArray = array of string; 是动态数组类型,可以调整大小.动态数组在Delphi 4中引入. 在参数定义中 procedure Test(var X: array of string); 是open array parameter这意味着它将接受不同大小的数组作为输入.它只需要一个指针(即引用)到第一个元素,以及数组中最后一个元素的索引.它不知道或不关心输入数组是动态数组还是静态数组,因此不允许调整长度. 打开数组参数早于Delphi 1. 进一步阅读 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |