Cita:
Empezado por LDD
Gracias Casimiro, pero creo que no es esto lo que yo preguntaba
|
No! no se equivocó. Casimiro es la IA (Inteligencia Artesanal
) encargada de recordarnos cuando no cumplimos las normas y
guía de estilo de nuestro foro. (Te invito a leerla)
Ahora, con lo del error! ¿No será que la DLL tiene alguna falla? ¿O no tienes la versión correcta? ¿tienes documentación de esa DLL?
Usando la bola de cristal y leyendo un post anterior tuyo, creo que este error se te presenta al usar un componente que a su vez usa la DLL en cuestión.
En el código del componente encuentro que lo usan de una manera parecida a esta, y efectivamente genera el error que comentas.
Código Delphi
[-]
function NViewLibLoad(FileName : PChar; ShowProgress: BooLean):hbitmap; Stdcall; external 'NViewLib.dll';
procedure TForm1.Button1Click(Sender: TObject);
procedure callNViewLibLoad(FileName: string; ShowProgress: Boolean);
var
bmp: TBitmap;
lPchar: PChar;
len: Integer;
begin
len := Length(FileName) + 1;
bmp := TBitmap.Create;
try
lPchar := StrAlloc(len+1);
StrPLCopy(lPChar, FileName, len);
bmp.Handle := NViewLibLoad(lPchar, ShowProgress);
finally
bmp.Free;
end;
end;
begin
callNViewLibLoad('C:\000.bmp', False); end;
Pero, leyendo también el componente, veo que lo que quieren es dibujar el bmp en un canvas (imagino que el de un reporte), cosa que tu podrías solventar de otras maneras y sin necesidad de usar esa DLL. Por ej:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
procedure DrawBitmap(FileName: string; ACanvas: TCanvas);
var
bmp: TBitmap;
begin
bmp:= TBitmap.Create;
try
bmp.LoadFromFile(FileName);
ACanvas.Draw(0, 0, bmp);
finally
bmp.Free;
end;
end;
begin
DrawBitmap('C:\000.bmp', Self.Canvas); end;
Entonces, si no quieres depender de esa DLL. Lo que podrías hacer es reemplazar su uso por funciones de la VCL.