DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: zxdaemon
今日帖子: 45
在线用户: 10
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ihvte (无痕) ★☆☆☆☆ -
普通会员
2023/5/24 23:50:10
标题:
windows 二维动态数组的请教 浏览:390
加入我的收藏
楼主: 想把动态一维数组转成动态二维数组

也就是abc2 和abc功能一样。因为 arr动态的=w*h   因为arr不定  w*h也就不定了。请问一下有什么方法实现


function TForm1.abc(arr: array of Byte; w, h: Integer): Boolean;
Type
  tArr = Array[1..10,1..10] of Byte;
  pArr = ^tArr;
var
  I:integer;
  pdata,pdatb:pointer;
  pa:PArr;
begin
  pa := pArr(@arr[0]);

  ShowMessage(IntToHex(integer(pa),8));
end;

function TForm1.abc2(arr: array of Byte; w, h: Integer): Boolean;
Type
  tArr = Array of array of Byte;
  pArr = ^tArr;
var
  I:integer;
  pdata,pdatb:pointer;
  pa:PArr;
begin
  pa := pArr(@arr[0]);



  ShowMessage(IntToHex(integer(pa),8));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  x:Array of Byte;
  I:Integer;
begin
  setlength(x,100);

  for I := Low(x) to High(x) do
      x[I] := 100+I;

  Self.abc(x,10,10);
end;
----------------------------------------------
-
作者:
男 1111111112 (1111111112) ▲△△△△ -
普通会员
2023/5/25 10:15:35
1楼: 这玩意在内存里面是一样的吧
二维的概念只在编程里面吧并非内存结构.?
----------------------------------------------
-
作者:
男 wk_knife (wk_knife) ★☆☆☆☆ -
盒子活跃会员
2023/5/25 16:56:31
2楼: 根本不用转,自己写个函数传递二维的两个索引,返回一维数组相应的位置的对象就好了。
----------------------------------------------
-
作者:
男 myy (myy) ★☆☆☆☆ -
盒子活跃会员
2023/5/26 11:18:24
3楼: 就是求第 h 行,第 w 列,对应的是总数的第几个,小学数学题嘛。。
----------------------------------------------
-
作者:
男 ihvte (无痕) ★☆☆☆☆ -
普通会员
2023/6/2 12:04:09
4楼: 首先非常感谢大家的回复

知道  可以通  行 * 数组的宽 + 列 就可以把 一维数组转换成二维来操作数据。

因使用地方不同,只能把一维动态数组转成了二维动态指针后传给别人使用, 又没法让它来修改代码   就造成了现在的问题 


请问各位有什么方法吗?
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS