procedure TForm1.frxReport1BeforePrint(c: TfrxReportComponent);
var
Cross: TfrxCrossView;
i, j: Integer;
begin
if c is TfrxCrossView then
begin
Cross := TfrxCrossView(c);
for i := 1 to 16 do
for j := 1 to 16 do
Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]); //主要是这句的转法
end;
end;请大侠将上面的代码转成c++builder语法.搞不懂:
这是c++builder生成的hpp文件中的定义:
void __fastcall AddValue(const Variant *Rows, const int Rows_Size, const Variant *Columns, const int Columns_Size, const Variant *Cells, const int Cells_Size);这是delphi pas文件中的定义:
procedure AddValue(const Rows, Columns, Cells: array of Variant);谁能给解释下怎么回事
var
Cross: TfrxCrossView;
i, j: Integer;
begin
if c is TfrxCrossView then
begin
Cross := TfrxCrossView(c);
for i := 1 to 16 do
for j := 1 to 16 do
Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]); //主要是这句的转法
end;
end;请大侠将上面的代码转成c++builder语法.搞不懂:
这是c++builder生成的hpp文件中的定义:
void __fastcall AddValue(const Variant *Rows, const int Rows_Size, const Variant *Columns, const int Columns_Size, const Variant *Cells, const int Cells_Size);这是delphi pas文件中的定义:
procedure AddValue(const Rows, Columns, Cells: array of Variant);谁能给解释下怎么回事
还有是将这句转写成c++builder语法
Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]);
delphi中传递的是数组类型,注意数组本身是delphi一种类型,传递数组过去后delphi当然是有办法知道数组长度的
c++builder数组其实是原始类型(就是连续的内存空间了),只能通过传递数组首地址(数组第一个元素的地址)以及数组长度的方式传递数组,光是通过一个指针是无法确定数组长度的所以
Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]);
翻译过来 可能像这样
Cross.AddValue(—i, 1,—j,1, —StringGrid1.Cells[i - 1, j - 1],1);