integer和longint是一样的,根本不用转换,下面的代码没问题procedure TForm1.Button1Click(Sender: TObject); var a1: array of byte; b1: longint; begin b1 := 100; setlength(a1,b1); end; 这样定义的数组是一维的,如果你连维数也要动态分配,这样是不行的 你到底是要动态确定数组元素的个数,还是数组的维数?
//测试了一下没有问题呀? procedure TForm1.Button1Click(Sender: TObject); var A1: array of Byte; B1: Integer; C1: LongInt; Begin B1 := C1; SetLength(A1, B1); end;//请给出你调试的代码
我发现问题了 我的函数是这样定义的 function GetInChars(PortID: THandle; InBuff: array of byte): integer; 现在只要我在函数里定义这个InBuff的维数就会报错。 请问这是为什么 我能传递数组作为输出么?
可以传递数组为输出,用var function GetInChars(PortID: THandle; var InBuff: array of byte):integer;但是你在调用这个函数的时候必须给定数组的维数,并且在函数中不能改变function Tform1.test(var aa: array of byte): integer; var i:integer; begin result := 0; for i := low(aa) to high(aa) do begin aa[i] := 1; end; end;procedure TForm1.Button1Click(Sender: TObject); var a1: array of byte; b1: longint; begin b1 := 100; setlength(a1,b1); test(a1); end;
我在VAR中定义了
A1:Array Of Byte;
B1: Integer;
C1: LongInt;Begin
B1:= Integer(C1);
SetLength(A1, B1);
......可编译说Incompatible Types......
请参看help 。
var
a1: array of byte;
b1: longint;
begin
b1 := 100;
setlength(a1,b1);
end;
这样定义的数组是一维的,如果你连维数也要动态分配,这样是不行的
你到底是要动态确定数组元素的个数,还是数组的维数?
procedure TForm1.Button1Click(Sender: TObject);
var
A1: array of Byte;
B1: Integer;
C1: LongInt;
Begin
B1 := C1;
SetLength(A1, B1);
end;//请给出你调试的代码
我的函数是这样定义的
function GetInChars(PortID: THandle; InBuff: array of byte): integer;
现在只要我在函数里定义这个InBuff的维数就会报错。
请问这是为什么
我能传递数组作为输出么?
function GetInChars(PortID: THandle; var InBuff: array of byte):integer;但是你在调用这个函数的时候必须给定数组的维数,并且在函数中不能改变function Tform1.test(var aa: array of byte): integer;
var
i:integer;
begin
result := 0;
for i := low(aa) to high(aa) do
begin
aa[i] := 1;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
a1: array of byte;
b1: longint;
begin
b1 := 100;
setlength(a1,b1);
test(a1);
end;
type
YourInt = Array [ 0 .. 1 ] Of Integer;....B1 := YourInt;
C1 := LongInt;
B1 = YourInt( C1 );