Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2010
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 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 Noteví fecha: 26-01-2010 a las 17:15:36. Razón: Poner etiquetas code
Responder Con Cita
  #2  
Antiguo 26-01-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
haces un array de longint y le asignas numpaginas como longitud, aparte del desborde? no tendria que ser numero de datos por pagina * numpaginas (algo asi)? Porque usas 3 arrays? fijate que si asignas NumPaginas + Desborde65 + 1 ya estas asignando mas de 65535, por lo que en el caso que se pueda asignar mas de 65535 puedes directamente usar un array para todo(en el caso que no se pueda asignar te saltaria un error de memoria, claro, quiza vaya por aqui...)...
Personalmente haria una clase y lo miraria todo con lupa (mirar los limites de asignacion, que ahora no se; si el finalize funciona correctamente, si se necesita el freeandnil, etc...)
De todas maneras, para encontrar el error ahora lo mejor seria ir con el step para saber en que linea te salta...
Un saludo y a ver si te sirve.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Out of Memory luxus OOP 5 30-09-2008 23:11:54
rx memory table julyus .NET 2 18-09-2008 20:27:08
error.. out of memory... CarlosHernandez Firebird e Interbase 12 07-03-2007 14:03:22
Juego Memory Xema OOP 1 16-09-2004 13:59:24
insificient memory fabriciof Conexión con bases de datos 1 26-04-2004 20:03:29


La franja horaria es GMT +2. Ahora son las 05:08:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi