var
A: array of myList; //myList是自定义结构,A在本单元是全程的
...
f1(B:array of myList);
begin
B:=A; //在此不能通过,提示相反的类型,怎么办
...
end;
f2();
begin
showmessage(A[1].name);
end;
end.
17 个解决方案
#1
刚次写错了。
例子如下:
var
A: array of myList; //myList是自定义结构,A在本单元是全程的
...
f1(B:array of myList);
begin
A:=B; //在此不能通过,提示相反的类型,怎么办
...
end;
f2();
begin
showmessage(A[1].name);
end;
end.
例子如下:
var
A: array of myList; //myList是自定义结构,A在本单元是全程的
...
f1(B:array of myList);
begin
A:=B; //在此不能通过,提示相反的类型,怎么办
...
end;
f2();
begin
showmessage(A[1].name);
end;
end.
#2
传递参数f1(a[i]);
A:=B; //不太明白你要干什么
A:=B; //不太明白你要干什么
#3
A: array of myList是动态数组
b:是数组参数既开放数组
不是一会事
b:是数组参数既开放数组
不是一会事
#4
想在本单元中其它函数中使用A,是通过f1(B:array of myList)初始化A的。
#5
应当怎样做再能在f2()中使用通过f1传进来的参数?
#6
自己复制:
SetLength(A,High(B)+1);
for i:=0 to High(B) do
A[i]:=B[i];
SetLength(A,High(B)+1);
for i:=0 to High(B) do
A[i]:=B[i];
#7
能不能声明一个指针,指向需要传入的数组B,以后在本单元中使用此指针呢?
如果能的话,应当怎样做。谢谢各位了。
一直在线等待。
如果能的话,应当怎样做。谢谢各位了。
一直在线等待。
#8
jimh(jimmy) 兄的方法我也想过,不过这样一来可能会消耗系统时间和内存,因为传入的数组可能很大,我想能不能通过A引用B?
#9
动态数组需要分配空间的。。
SetLength
SetLength
#10
试过了,不行。
#11
Setlength
然后再偱环就是了,试试,可以吗?
然后再偱环就是了,试试,可以吗?
#12
能不能声明一个指针,指向需要传入的数组B,以后在本单元中使用此指针呢?
如果能的话,应当怎样做。谢谢各位了。
如果能的话,应当怎样做。谢谢各位了。
#13
再次谢谢,如果分不够,可以再加。
#14
var
A: array of myList; //myList是自定义结构,A在本单元是全程的
...
f1(B:array of myList);
begin
B:=A; //在此不能通过,提示相反的类型,怎么办
...
end;
--------------
这样定义没有必要吧
在函数里定义b,不要传参数,反正a是全局的,可以直接使用
A: array of myList; //myList是自定义结构,A在本单元是全程的
...
f1(B:array of myList);
begin
B:=A; //在此不能通过,提示相反的类型,怎么办
...
end;
--------------
这样定义没有必要吧
在函数里定义b,不要传参数,反正a是全局的,可以直接使用
#15
楼上说得也有道理,不过f1函数是个线程类成员函数,准确地说是该类的构造函数,直接为他的成员变量A负值,程序灵活性不大。
#16
这个应该是Pascal的问题。在pascal中,必须把这种情况定义一个类型。
TMyList = array of MyList;
函数定义:
f1( list:TMyList )
var p:TMyList;
begin
p := list;
end;
TMyList = array of MyList;
函数定义:
f1( list:TMyList )
var p:TMyList;
begin
p := list;
end;
#17
var
A: array of myList;你定义的是一个不定长的数组,使用前必须初始化数组大小
比如用:setlength()函数
A: array of myList;你定义的是一个不定长的数组,使用前必须初始化数组大小
比如用:setlength()函数
#1
刚次写错了。
例子如下:
var
A: array of myList; //myList是自定义结构,A在本单元是全程的
...
f1(B:array of myList);
begin
A:=B; //在此不能通过,提示相反的类型,怎么办
...
end;
f2();
begin
showmessage(A[1].name);
end;
end.
例子如下:
var
A: array of myList; //myList是自定义结构,A在本单元是全程的
...
f1(B:array of myList);
begin
A:=B; //在此不能通过,提示相反的类型,怎么办
...
end;
f2();
begin
showmessage(A[1].name);
end;
end.
#2
传递参数f1(a[i]);
A:=B; //不太明白你要干什么
A:=B; //不太明白你要干什么
#3
A: array of myList是动态数组
b:是数组参数既开放数组
不是一会事
b:是数组参数既开放数组
不是一会事
#4
想在本单元中其它函数中使用A,是通过f1(B:array of myList)初始化A的。
#5
应当怎样做再能在f2()中使用通过f1传进来的参数?
#6
自己复制:
SetLength(A,High(B)+1);
for i:=0 to High(B) do
A[i]:=B[i];
SetLength(A,High(B)+1);
for i:=0 to High(B) do
A[i]:=B[i];
#7
能不能声明一个指针,指向需要传入的数组B,以后在本单元中使用此指针呢?
如果能的话,应当怎样做。谢谢各位了。
一直在线等待。
如果能的话,应当怎样做。谢谢各位了。
一直在线等待。
#8
jimh(jimmy) 兄的方法我也想过,不过这样一来可能会消耗系统时间和内存,因为传入的数组可能很大,我想能不能通过A引用B?
#9
动态数组需要分配空间的。。
SetLength
SetLength
#10
试过了,不行。
#11
Setlength
然后再偱环就是了,试试,可以吗?
然后再偱环就是了,试试,可以吗?
#12
能不能声明一个指针,指向需要传入的数组B,以后在本单元中使用此指针呢?
如果能的话,应当怎样做。谢谢各位了。
如果能的话,应当怎样做。谢谢各位了。
#13
再次谢谢,如果分不够,可以再加。
#14
var
A: array of myList; //myList是自定义结构,A在本单元是全程的
...
f1(B:array of myList);
begin
B:=A; //在此不能通过,提示相反的类型,怎么办
...
end;
--------------
这样定义没有必要吧
在函数里定义b,不要传参数,反正a是全局的,可以直接使用
A: array of myList; //myList是自定义结构,A在本单元是全程的
...
f1(B:array of myList);
begin
B:=A; //在此不能通过,提示相反的类型,怎么办
...
end;
--------------
这样定义没有必要吧
在函数里定义b,不要传参数,反正a是全局的,可以直接使用
#15
楼上说得也有道理,不过f1函数是个线程类成员函数,准确地说是该类的构造函数,直接为他的成员变量A负值,程序灵活性不大。
#16
这个应该是Pascal的问题。在pascal中,必须把这种情况定义一个类型。
TMyList = array of MyList;
函数定义:
f1( list:TMyList )
var p:TMyList;
begin
p := list;
end;
TMyList = array of MyList;
函数定义:
f1( list:TMyList )
var p:TMyList;
begin
p := list;
end;
#17
var
A: array of myList;你定义的是一个不定长的数组,使用前必须初始化数组大小
比如用:setlength()函数
A: array of myList;你定义的是一个不定长的数组,使用前必须初始化数组大小
比如用:setlength()函数