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;