用Delphi写的DLL,在VB中进行调用,有的时候会不能关闭文件句柄?
VB启动的时候,会关闭5个标准DOS文件句柄(0..4),这样,打开文件的例程就可以重新使用这些句柄,对于使用文件来说,没有什么问题,很正常,但是,Delphi的关闭文件的例程是有内建的安全特征的,它拒绝关闭DOS标准文件句柄。在DOS下,这是一个好主意,然而,你面临的情况是在DLL中打开文件,而且DLL可能不会关闭,即使关闭DLL你的文件也一直打开!!VC++的限制少一些,因此可以关闭标准的DOS文件句柄。如果你要真正关闭这个打开的文件,可以使用下面的过程:
Procedure ReallyCloseFile(Var F); Assembler;
Asm
les bx, F
mov bx, es:[bx]
mov ah, $3E
call Dos3Call
End;