关于procedure类型的参数问题
想把下面一段代码封装成DLL供VB调用
procedure defragmem(limit : integer; x: proc);
函数defragmem的类型为procedure 参数x: proc(procedure)
那么我在VB里面需要相应的把类型改为什么样的呢。谢谢各位了。
library Project2;
uses
SysUtils,
Classes,
Windows;
type proc = procedure;
var bussy : boolean;
//limit dalam satuan megabyte
{$R *.res}
procedure defragmem(limit : integer; x: proc);stdcall;
var tab : array [0..1024] of pointer;
i : integer;
p : pointer;
lim : integer;
begin
if bussy then exit;
bussy:=true;
lim:=limit;
if lim> 1024 then lim:=1024;
for i:=0 to lim do tab [i]:=nil;
for i:=0 to lim-1 do
begin
p:=VirtualAlloc(nil, 1024*1024, MEM_COMMIT,
PAGE_READWRITE + PAGE_NOCACHE);
tab[i]:=p;
asm
pushad
pushfd
mov edi, p
mov ecx, 1024*1024/4
xor eax, eax
cld
repz stosd
popfd
popad
end;
if assigned(x) then x;
end;
for i:=0 to lim-1 do
begin
VirtualFree(Tab[i], 0, MEM_RELEASE);
if assigned(x) then x;
end;
bussy:=false;
end;
exports defragmem;
begin
bussy:=false;
end.
[解决办法]
非标准的参数,VB调用不了的