当前位置:主页>销售管理软件> 列表

format('%s%s%s..',[a[1],a[2 找超市进销存流程图

财务软件版1楼: format(''%s%s%s..'',[a[1],a[2]..a[n]])
当a[n]为动态数组时,该如何添加。

2楼: format函数的第二个参数是array of const 等价于Array of TVarRec (该类型在system单元中声明),给个例子

procedure TForm1.Button1Click(Sender: TObject);
var TempArray:Array of TVarRec;
ResultString,SS:string;
i:integer;
begin
setLength(TempArray,2);
SS:=''aa'';
i:=99;
TempArray[0].VAnsiString:=Pointer(ss);
TempArray[0].VType:=vtAnsiString;
TempArray[1].VInteger:=i;
TempArray[1].VType:=vtInteger;
ResultString:=format(''%s%d'',TempArray);
showmessage(ResultString);
end; 如记账软件推荐

3楼: var
i: integer ;
ss: string ;

ss:='''' ;
for i:=1 to n
ss:= ss+format(''%s'',[a[i]) ;

4楼: 用循环分开输出吧

5楼: hbwin2001
但是format函数前面的第一个参数“%s”又该如应相应增加到与第二个参数相同的数目呢?

6楼: 请注意函数的声明:


function Format(const Format: string; const Args: array of const): string;
后一个参数本身就是个动态数组,因此直接把a传递即可。
前一个参数,一个字符串而已,根据a的长度一个循环就构造出来了!

财务软件版7楼: array of const 是动态开放数据,不能传一般的数组的吧,不信你试试。

前面的format字符串应该能根据你的数组来构建

8楼: high(a),来确定一维的个数 +1 是你要创建%s的个数。
哦,不行,问题是数组不能动态创建。
也可以,数组肯定是同一类型,要么数字,要么文本,也可以创建串的哦。

9楼: 直接传A进去就行

10楼: 问题基本已经解决,直接传a肯定不行,我用n种方法试过n遍,还是hbwin2001的方法行得通,但是还有一个小小问题,就是ss是string类型,但是在这里,
TempArray[0].VAnsiString:=Pointer(ss);
TempArray[0].VType:=vtAnsiString;(为什么不能用vtstring),我看过system,里面有vtstring这一个参数,我也试过,用vtstring时输出的内容不是ss,为什么?

11楼: vtstring 是pshortstring类型的,所以可以写成这样:

procedure TForm1.Button1Click(Sender: TObject);
var TempArray:Array of TVarRec;
ResultString:string;
i:integer;
ss:shortstring;
begin
setLength(TempArray,2);
SS:=''aa'';
i:=99;
TempArray[0].VString:=@ss;
TempArray[0].VType:=vtString;
TempArray[1].VInteger:=i;
TempArray[1].VType:=vtInteger;
ResultString:=format(''%s%d'',TempArray);
showmessage(ResultString);
end;

12楼: 好,谢谢各位,特别是hbwin2001 如超市进销存流程图