小弟不才,碰到一个问题望各位大侠指教。 ( 积分: 200 )

  • 主题发起人 主题发起人 netproxy
  • 开始时间 开始时间
N

netproxy

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个ocx import到delphi,有一个函数 foo(var refi:integer)
VB的例子如下,但不知Delphi怎么完成:(各位见笑了)
dim lm(0) of long
foo(lm(0))
 
有一个ocx import到delphi,有一个函数 foo(var refi:integer)
VB的例子如下,但不知Delphi怎么完成:(各位见笑了)
dim lm(0) of long
foo(lm(0))
 
var t: integer;
foo(t)
 
这样不行,因为vb定义是dim lm(0) as long,是一个array.
vb可以这样传入参数,但Delphi怎么弄,如果定义成var a:array of integer;
foo(a);
编译通不过.
 
這樣就行了:
聲明數組:var b:array[0..2] of integer;

聲明過程:procedure foo(var a:integer)
//這是一個過程
初始化數組b:b[0]:=1;b[1]:=2;b[2]:=3;
調用foo:foo(b[0]);
 
楼上的差不多了,但可能要把过程声明改为:
procedure foo(var a: array of integer)

调用为:
foo(b);
 
你的vb例子里面虽然声明的是数组,但实际代入的还是一个整数,因此,它的声明不用变化
可以这么做

声明过程:
procedure foo(var refi:integer)
stdcall;
var x:integer;
foo(x);

如果愿意用数组,可以这样:
var x:array[1..10] of integer;
for i:=1 to 10 do foo(x);
 
不好意思,是我看错了,VB定义是这样的 Dim lm(128) As String
foo(lm(0));
它是这样调用的,但这个ocx导入到Delphi中函数为
foo(var rel:integer);
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
662
import
I
I
回复
0
查看
814
import
I
后退
顶部