A1:array of string;
A2:array of string;这样两个数组,如何将A1的值完全赋值给A2?我这样做,但是在关闭时报错A1:array of string;
A2: Array of String;
i,n:Integer;
begin
setlength(A1,5);
A1[0]:='1';
A1[1]:='2';
A1[2]:='2';
A1[3]:='2';
A1[4]:='4';
n:=High(A1);
Edit1.Text :=IntTostr(n);
Edit2.Text :=A1[4]; Setlength(A2,n);
For i:=n downto 0 Do
A2[i]:=A1[i];
A2:array of string;这样两个数组,如何将A1的值完全赋值给A2?我这样做,但是在关闭时报错A1:array of string;
A2: Array of String;
i,n:Integer;
begin
setlength(A1,5);
A1[0]:='1';
A1[1]:='2';
A1[2]:='2';
A1[3]:='2';
A1[4]:='4';
n:=High(A1);
Edit1.Text :=IntTostr(n);
Edit2.Text :=A1[4]; Setlength(A2,n);
For i:=n downto 0 Do
A2[i]:=A1[i];
//Delphi 帮助!
Copying arrays
When copying single dimension arrays, we can use the Copy routine. It allows us to copy all or part of one array to another, as in this example:
var
i : Integer;
Source, Target : array of Integer;
begin
SetLength(Source, 8);
for i := 1 to 8 do // Build the dynamic source array
Source[i-1] := i; // Remember that arrays start at index 0
Target := Copy(Source, 3, 4);
for i := 0 to Length(Target) -1 do // Display the created array
ShowMessage('Target['+IntToStr(i)+'] : '+IntToStr(Target[i]));
end;
n的值你知道是多少不?数组元素是从0开始的。所以,你这样A2的元素只有四个
a1[0]:=1;
a1[1]:=2;
a1[2]:=3;
a1[3]:=4;
a1[4]:=5;
SetLength(a2,5);
a2:=a1;
HIGH(A1)是四,
Setlength(A2,n) 应该是5
CopyMemory(@A2,@A1,sizeof(Byte)*High(A1));
var
A1:array of string;
A2: Array of String;
i,n:Integer;
begin
setlength(A1,5);
A1[0]:='1';
A1[1]:='2';
A1[2]:='2';
A1[3]:='2';
A1[4]:='4';
n:=High(A1);
Edit1.Text :=IntTostr(n);
Edit2.Text :=A1[4]; Setlength(A2,n);
Move(A1,A2,n);
For i:=0 to high(a2) Do
memo1.Lines.Add(a2[i]);
end;
A1:array of string;
A2:array of string; 这样两个数组,如何将A1的值完全赋值给A2? 我这样做,但是在关闭时报错 A1:array of string;
A2: Array of String;
i,n:Integer;
begin
setlength(A1,5);
A1[0]:='1';
A1[1]:='2';
A1[2]:='2';
A1[3]:='2';
A1[4]:='4';
n:=High(A1);
Edit1.Text :=IntTostr(n);
Edit2.Text :=A1[4]; Setlength(A2,n);
For i:=n dow…
[/Quote]
你这里的n是变量么?如果是放在循环里都会报错吧,
你可以这样写
A1:array of string;
A2: Array of String;
i,n:Integer;
begin
n := 5;
setlength(A1,n);
A1[0]:='1';
A1[1]:='2';
A1[2]:='2';
A1[3]:='2';
A1[4]:='4';
n:=High(A1);
Edit1.Text :=IntTostr(n);
Edit2.Text :=A1[4]; Setlength(A2,n);
For i:=n downto 0 Do
A2[i]:=A1[i];
Move是危险的,不做任何检查和转换。
、
至于2楼说的知道A1的长度,这只是我举的一个例子,实际应用时不是确定的
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure TESTArr();
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
TESTArr();
end;procedure TForm1.TESTArr();
var
A1: array of string;
A2: array of String;
i,n:Integer;
begin
SetLength(A1,5);
A1[0]:='1';
A1[1]:='2';
A1[2]:='2';
A1[3]:='2';
A1[4]:='4';
n:=High(A1);
Edit1.Text :=IntTostr(n);
Edit2.Text :=A1[4]; SetLength(A2,n);
For i := n downto 0 Do
A2[i] := A1[i];
end;end.