调用DLL函数时发生访问冲突
我在DLL上有下一个函数:调用DLL函数时发生访问冲突,dll,delphi-2010,Dll,Delphi 2010,我在DLL上有下一个函数: function PedirContraseña() : string; var clave, claveCodificada : string; begin clave := InputBox('Autenticación', 'Introduzca la clave de acceso', ''); claveCodificada := SHA256Hash(clave); Result := claveCodificada; end; exports P
function PedirContraseña() : string;
var
clave, claveCodificada : string;
begin
clave := InputBox('Autenticación', 'Introduzca la clave de acceso', '');
claveCodificada := SHA256Hash(clave);
Result := claveCodificada;
end;
exports PedirContraseña;
它向用户请求密码,然后应用SHA256哈希并返回此哈希的结果
在主应用程序上,我有以下调用:
function PedirContraseña() : string; external 'seguridad.dll';
procedure Tmenubodega.BitBtn1Click(Sender: TObject);
var
s : string;
begin
inherited;
s := PedirContraseña;
ShowMessage(s);
end;
- 我第一次单击按钮时,它工作正常
- 第二次它仍然有效
- 从现在起,每单击2次,就会在dll上显示一个访问冲突异常(1次执行,下次不执行,下次执行,下次不执行…)
提前感谢您是否使用共享内存管理器?不(至少不是有意的)。如果您想将一个模型中分配的字符串返回给另一个模块,而该模块会破坏该字符串,则需要使用共享内存管理器。但是在本例中,由于您控制这两个模块,并且使用Delphi特定的类型,为什么不使用包呢?我从来没有编写过包,所以我没有考虑过它。关于DLL;我已经添加了Sharemem单元,它运行良好。我知道(这种情况发生在我身上,因为我没有阅读自动生成的评论--)谢谢