Ver Mensaje Individual
  #10  
Antiguo 26-01-2010
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Reputación: 0
blaiselaborde Va por buen camino
Código . . .

He tratado de simplificar el código con la parte dónde se maneja la memoria dinámica, a ver si alguno me dá una idéa del problema de la aplicación. Como esta hay otras varias.

Código:
function TfrmPaginar.ObtenerListado( { Params}): Boolean;
Const
  Desborde65 = 65535+1;
  Desborde130 = Desborde65*2;
  Desborde190 = Desborde65*3;

var
  ListaCabecera       : TStringList;
  BufferPagDes,
  BufferPagDes65,
  BufferPagDes130,
  BufferPagDes190   : array of LongInt;

begin
  Result           := True;
  listaCabecera := TStringList.Create;
  Try
    Try
      SetLength(BufferPagDes,     NumPaginas + 1);
      SetLength(BufferPagDes65,  NumPaginas + Desborde65  + 1);
      SetLength(BufferPagDes130, NumPaginas + Desborde130 + 1);
      SetLength(BufferPagDes190, NumPaginas + Desborde190 + 1);
    Except
      On E: EOutOfMemory do
        Begin
          ShowMessage('Falta de Memoria: ' + E.Message);
          Result := False; 
         end; // On
    end; // Try

// ***** Código ****

   BufferCab    := StrAlloc(TamanoCab);
   BufferCab    := listaCabecera.GetText;

// ***** Código ****

  Finally
    listaCabecera.Free;
    
    if conCabecera then 
      StrDispose(BufferCab);

    Finalize(BufferPagDes);
    Finalize(BufferPagDes65);
    Finalize(BufferPagDes130);
    Finalize(BufferPagDes190);
  end;
end;

Última edición por Casimiro Notevi fecha: 26-01-2010 a las 17:15:36. Razón: Poner etiquetas code
Responder Con Cita