永发信息网

delphi 常量数组赋值给变量数组

答案:3  悬赏:10  手机版
解决时间 2021-12-23 22:21
  • 提问者网友:你给我的爱
  • 2021-12-22 23:10
请问下面赋值有什么问题,为什么会有Incompatible types错误呢?
procedure TForm1.FormCreate(Sender: TObject);
const a: array [0..3] of char = (#1,#1,#1,#1);
var
b : array [0..3] of char;
begin
b := a; // Incompatible types
end;
最佳答案
  • 五星知识达人网友:低血压的长颈鹿
  • 2022-01-10 02:22
delphi(pascal)本身不支持高级别的矩阵运算,只能对矩阵或数组里的单个元素进行处理。
procedure TForm1.Button1Click(Sender: TObject);
const a:array[0..3] of char=(#1,#1,#1,#1);
var
  b : array [0..3] of char;
  i:integer;
begin
  for i:=0 to 3 do b[i]:=a[i];
end;
全部回答
  • 1楼网友:等灯
  • 2022-01-10 04:58
1、for i := 0 to 99 do name[i] := #0; 2、fillchar( name, sizeof(name), 0 ); 例如:var  a:array of integer;  //定义a为动态数组  count,i:integer;     begin  setlength(a,10);    //给数组a确定大小  for count:=0 to 9 do//给数组a循环赋值  begin    a[count]:=count;  end;  for i:=0 to length(a)-1 do  //将a的数组循环添加到memo1中  begin    memo1.lines.add(inttostr(a[i])) ;  end; end; 补充:delphi,是windows平台下著名的快速应用程序开发工具(rapid application development,简称rad)。它的前身,即是dos时代盛行一时的“borlandturbo pascal”,最早的版本由美国borland(宝兰)公司于1995年开发。主创者为anders hejlsberg。经过数年的发展,此产品也转移至embarcadero公司旗下。delphi是一个集成开发环境(ide),使用的核心是由传统pascal语言发展而来的object pascal,以图形用户界面为开发环境,透过ide、vcl工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。
  • 2楼网友:等灯
  • 2022-01-10 03:45
动态数组的使用 //例1: var StrArr: array of String; //动态数组定义时不与维数 begin SetLength(StrArr,6); //分配6个元素位置: 0-5 StrArr[0] := '万一'; //动态数组的下界是 0 ShowMessage(StrArr[0]); //分配空间后和静态数组一样使用 StrArr := nil; //一般没必要手动释放, 动态数组离开作用域会自释放 end; -------------------------------------------------------------------------------- //例2. 动态数组的引用: var Arr1,Arr2: array of Integer; a: array[0..1] of Integer; begin SetLength(Arr1,6); Arr1[5] := 100; Arr2 := Arr1; //Arr2 引用了 Arr1 ShowMessage(IntToStr(Arr2[5])); //100 ShowMessage(IntToStr(Length(Arr2))); //当然 Arr2 维数也会是 6 ShowMessage(IntToStr(SizeOf(Arr1))); //4, 其实动态数组是个指针 ShowMessage(IntToStr(SizeOf(Arr2))); //4 Arr2[5] := 99; //现在它们指向同一个数组, 改变这个就是改变那个 ShowMessage(IntToStr(Arr1[5])); //99 Arr1 := nil; //释放其中一个指针, 数组继续存在 ShowMessage(IntToStr(Arr2[5])); //99 end; -------------------------------------------------------------------------------- //例3. 数组 Copy <1>: var Arr1,Arr2: array of Integer; begin SetLength(Arr1,6); Arr1[5] := 100; Arr2 := Copy(Arr1); //数组 Copy Arr2[5] := 99; //改变 Arr2 不再影响 Arr1 ShowMessage(IntToStr(Arr1[5]-Arr2[5])); //1 SetLength(Arr1,7); ShowMessage(IntToStr(Length(Arr1))); //7 ShowMessage(IntToStr(Length(Arr2))); //6, 没有一点牵扯了 end; -------------------------------------------------------------------------------- //例4. 数组 Copy <2>: var Arr1,Arr2: array of Integer; i: Integer; begin SetLength(Arr1,6); for i := Low(Arr1) to High(Arr1) do //给每个元素赋值 Arr1[i] := i+1; Arr2 := Copy(Arr1,1,3); //只 Copy 第2..4个元素 ShowMessage(IntToStr(Arr1[1])); //2, 现在 Arr2[0] 和 Arr1[1] 的值是一样的 ShowMessage(IntToStr(Arr2[0])); //2 ShowMessage(IntToStr(Length(Arr1))); //6, 维数肯定不一样了 ShowMessage(IntToStr(Length(Arr2))); //3 end; -------------------------------------------------------------------------------- //例5. 动态多维数组: var Arr: array of array of Integer; //定义多维数组 begin SetLength(Arr,5,5); //分配空间 Arr[0,3] := 100; //赋值 ShowMessage(IntToStr(Arr[0,3])); //取值 end; -------------------------------------------------------------------------------- //例6. 另类建立: var Arr: array of Integer; begin Arr := varArrayCreate([0,3],varInteger); ShowMessage(IntToStr(Length(Arr))); //4 Arr := VarArrayOf([1,2,3,4]); ShowMessage(IntToStr(Arr[0])); //1 {这是给变体数组使用的,可能会有效率问题} end;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯