Ver Mensaje Individual
  #4  
Antiguo 15-12-2022
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 20
movorack Va camino a la famamovorack Va camino a la fama
Cita:
Empezado por LDD Ver Mensaje
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); //Error loading C
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); //Carga el BMP en el formulario
end;

Entonces, si no quieres depender de esa DLL. Lo que podrías hacer es reemplazar su uso por funciones de la VCL.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita