谁帮忙看看, 基础问题

godear 2005-07-27 01:34:30
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);

谁能给解释下怎么回事
...全文
111 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
godear 2005-07-29
  • 打赏
  • 举报
回复
谢谢楼上 ikumei(雷欧钠德) 老大
ikumei 2005-07-28
  • 打赏
  • 举报
回复
首先这个函数意图上需要的参数其实是3个数组
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);
godear 2005-07-27
  • 打赏
  • 举报
回复
看来表达有问题, 我是想问c++builder中hpp文件中的函数参数为什么会增加了一倍
还有是将这句转写成c++builder语法
Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]);
xixuemao 2005-07-27
  • 打赏
  • 举报
回复
应该是将cells的值赋给Cross的第rows行第columns列吧
godear 2005-07-27
  • 打赏
  • 举报
回复
自己顶, 在线, 解决马上给分

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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