Ver Mensaje Individual
  #1  
Antiguo 11-07-2008
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Reputación: 18
Khronos Va por buen camino
Out of system resources

Ester mensaje de error me salio por cargar imagenes de una dll. Tengo unas imagenes que cambian en el evento onEnter y onExit, pues si estos eventos se lanzan unas 12 veces o asi se cuelga el proceso explorer.exe y se pone la pantalla en blanco y me sale este mensaje de error

Me parece que es por la memoria que no la libero porque cada vez que se lanza el eventro onEnter y onExit en el taskmanager se nota como aumenta el consumo de memoria de la aplicacion.

En la dll tengo imagenes como archivos de recursos y dentro de la dll tengo una funcion para extraer todas las imagenes:

Código Delphi [-]
//Esta seria la dll
type
    PHXBitmap = record
      phxPlay, phxPlayMove, phxPlayClick, phxPause, phxPauseMove, phxPauseClick, phxPrevious,
      phxPreviousMove, phxPreviousClick, phxNext, phxNextMove, phxNextClick, phxStop, phxStopMove,
      phxStopClick, phxOpen, phxOpenMove, phxOpenClick: HBITMAP;
    end;

  function GetImages : PHXBitmap; stdcall; export;

exports
  GetImages;

implementation

function GetImages : PHXBitmap;
var
  DllHandle: THandle;
begin
  DllHandle := LoadLibrary('.\phxres\phxres.dll');
  if DllHandle <> 0 then begin
    try
         result.phxPlay:=   LoadBitmap(DllHandle, 'Play');
         result.phxPlayMove:=   LoadBitmap(DllHandle, 'PlayMove');
         result.phxPlayClick:=   LoadBitmap(DllHandle, 'PlayClick');
         result.phxPause:=   LoadBitmap(DllHandle, 'Pause');
         result.phxPauseMove:=   LoadBitmap(DllHandle, 'PauseMove');
         result.phxPauseClick:=   LoadBitmap(DllHandle, 'PauseClick');
         result.phxStop:=   LoadBitmap(DllHandle, 'Stop');
         result.phxStopMove:=   LoadBitmap(DllHandle, 'StopMove');
         result.phxStopClick:=   LoadBitmap(DllHandle, 'StopClick');
         result.phxNext:=   LoadBitmap(DllHandle, 'Next');
         result.phxNextMove:=   LoadBitmap(DllHandle, 'NextMove');
         result.phxNextClick:=   LoadBitmap(DllHandle, 'NextClick');
         result.phxPrevious:=   LoadBitmap(DllHandle, 'Previous');
         result.phxPreviousMove:=   LoadBitmap(DllHandle, 'PreviousMove');
         result.phxPreviousClick:=   LoadBitmap(DllHandle, 'PreviousClick');
         result.phxOpen:=   LoadBitmap(DllHandle, 'Open');
         result.phxOpenMove:=   LoadBitmap(DllHandle, 'OpenMove');
         result.phxOpenClick:=   LoadBitmap(DllHandle, 'OpenClick');
    finally
    end;
  end
  else begin

  end;
end;

Y aqui la llamada...
Código Delphi [-]
procedure TFMain.StopMouseEnter(Sender: TObject);
begin
Stop.Picture.Bitmap.Handle:= GetImages.phxStopMove;
end;

Espero que me puedan ayudar.. Salu2
Responder Con Cita