首页 > 其他分享 >一个关于动态数组的BUG,Copy

一个关于动态数组的BUG,Copy

时间:2023-12-26 11:24:46浏览次数:34  
标签:数组 Lines Add arr2 arr1 integer Copy BUG Memo1

下面这样写是不会错的:

procedure TForm1.Button1Click(Sender: TObject);
var
  arr1,arr2 : array of integer;
  i : integer;
  sTmp : string;
begin
  for i := 0 to Length(arr1)-1 do
    arr1[i] := i + 1;
  Memo1.Lines.Add(ArrayToString(arr1));
  arr2 := Copy(arr1, 0, 5);
  Memo1.Lines.Add(ArrayToString(arr2));
end;

 

如果把两个数组分两行定义,就会报错,如下:

procedure TForm1.Button1Click(Sender: TObject);
var
  arr1 : array of integer;
  arr2 : array of integer;
  i : integer;
  sTmp : string;
begin
  for i := 0 to Length(arr1)-1 do
    arr1[i] := i + 1;
  Memo1.Lines.Add(ArrayToString(arr1));
  arr2 := Copy(arr1, 0, 5);
  Memo1.Lines.Add(ArrayToString(arr2));
end;

报错:[dcc32 Error] Unit1.pas(63): E2008 Incompatible types

难道分两行定义的动态数组,就不是同一个类型了吗?

或者,这是Delphi编译器的一个BUG?

 

如果自定义一个类型,就不会报错了,如下:

type IntArray = array of integer;
procedure TForm1.Button1Click(Sender: TObject);
var
  arr1 : IntArray;
  arr2 : IntArray;
  i : integer;
  sTmp : string;
begin
  for i := 0 to Length(arr1)-1 do
    arr1[i] := i + 1;
  Memo1.Lines.Add(ArrayToString(arr1));
  arr2 := Copy(arr1, 0, 5);
  Memo1.Lines.Add(ArrayToString(arr2));
end;

 

标签:数组,Lines,Add,arr2,arr1,integer,Copy,BUG,Memo1
From: https://www.cnblogs.com/CipherLab/p/17927724.html

相关文章

  • 特殊的bug:element 0 of tensors does not require grad and does not have a grad_fn
    很多帖子都说了,设置requires_grad_()就行。但是我这次遇到的不一样,设置了都不行。我是这种情况,在前面设置了torch.no_grad():,又在这个的作用域下进行了requires_grad_(),这是不起作用的。简单版:withtorch.no_grad():model.eval()pos_embed=model(......
  • Integer数组与int数组排序对比
    使用Arrays.sort的方法发现int数组和Integer数组的sort方法有区别Integer[]arr={1,2,3};int[]arr1={1,2,3};Arrays.sort(arr1);Arrays.sort(arr,newComparator<Integer>(){@Overridepublicintcompar......
  • Leetcode LCP 14. 切分数组
    https://leetcode.cn/problems/qie-fen-shu-zu/description/给定一个整数数组nums,小李想将nums切割成若干个非空子数组,使得每个子数组最左边的数和最右边的数的最大公约数大于1。为了减少他的工作量,请求出最少可以切成多少个子数组。示例1:输入:nums=[2,3,3,2,3,3]......
  • 轮转数组
     给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例 2:......
  • 树状数组模板
    单点修改,区间查询/区间修改,单点查询template<typenameT>structBIT{#ifndeflowbit#definelowbit(x)(x&(-x));#endif //staticconstintmaxn=5e5+50; intn; vector<T>t; BIT(){} BIT(int_n):n(_n){t.resize(_n+1);} BIT(int_n,vect......
  • IDEA进行远程Debug调试的来龙去脉
    一、前言我们在测试环境时,遇到一些bug,看上下文的日志,还是无法判断出问题所在时,此时需要Debug来解决。为了更方便、更高效地定位和解决问题,远程调试成为一种常见的实践方式。这个还是不建议在生产中使用,可以在测试环境走和生产一样的单据来Debug。要是生产环境忘记去掉断点,直接炸了!......
  • Day38 三种数组初始化及内存分析
    三种数组初始化及内存分析Java内存分析Java内存:1.堆存放new的对象和数组​可以被所有的线程共享,不会存放别的对象引用2.栈存放基本变量类型(会包含这个基本类型的具体数值)​引用对象的变量(会存放这个引用在堆里面的具体地址)3.方法区可以被......
  • Bug的生命周期状态流程图
    bug的生命周期BUG的生命周期,就是一个BUG被发现到这个BUG被关闭的过程。生命周期中缺陷状态:新建-->指派-->已解决-->待验-->关闭发现BUG-->提交BUG-->指派BUG-->研发确认BUG-->研发去修复BUG-->回归验证BUG-->是否通过验证-->关闭BUG如果待验的BUG在验证时没有解决好,我们需要重......
  • 软件测试/测试开发|如何定位bug,一篇文章告诉你
    简介在我们对软件进行测试时,遇见bug是无法避免的,但是我们如何对出现的bug进行定位呢?bug究竟是哪个原因引起的就是我们解决bug的关键所在了,本文就来介绍一下如何定位bug。定位问题的重要性很多测试人员可能会说,测试的职责就是找到bug,至于找原因并修复,那是开发的事情,关我什么事?好,我的......
  • Odoo17_禁用从地址栏进debug模式
    1.参考odoo禁用debug模式_odoo14禁用debug-CSDN博客2.直接上代码#-*-coding:utf-8-*-fromodooimporthttpfromodoo.addons.web.controllersimporthomefromodoo.exceptionsimportUserErrorclassDebugHome(home.Home):@http.route('/web',type='ht......