Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2015
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Poder: 13
jocaro Va por buen camino
Array dinámico bidimensional en procedimiento recursivo

Buenos días

A ver si alguien me puede ayudar

Si en un procedimiento recursivo defino una matriz dinámica bidimensional, ¿en cada recursión estaré creando una matríz dinámica bidimensional distinta?,
o todas apuntarán a la misma zona de memoria. En el caso de que el comportamiento sea éste último, como podria conseguir una matriz por cada ejecución
del procedimiento

Un ejemplo somero del código sería el siguiente:

Código Delphi [-]
// Se pasa un elemento de la matriz creada en el nivel de recursión desde el que se llama                                    
procedure TSDIAppForm.ProcedimientoRecursivo(Clave: Integer; Dato: Integer);                                
var

  iBucle: Integer;
  iEleMat: Integer;                                 // Elementos de la matriz
  mdHijos: array of array of integer;          // Matriz de elementos con hijos

begin

  iEleMat := 0

  // Bucle de carga de la matriz. En cada recursión podrá tener un tamaño diferente

  Tabla.Locate('ClaPad', Clave, []);

  while (Tabla.fieldByName('ClaPad').asinteger = Clave)
  begin
    iEleMat := iEleMat + 1;
    SetLength( mdHijos, iEleMat, 2 );
    mdHijos[ iEleMat - 1, 0 ] := Tabla.fieldByName('Clave').asinteger;
    mdHijos[ iEleMat - 1, 1 ] := Tabla.fieldByName('Clapad').asinteger;
  end;

  Tabla.Next;

 end;

  // Hacemos una recursión por cada uno de los elementos de la matriz en este nivel

  for iBucle := low(mdHijos) to high(mdhijos) do
  begin
    ProcedimientoRecursivo( mdHijos[ iBucle, 0 ], mdHijos[ iBucle, 1 ] );
  end;

end;

Gracias de antemano.

Última edición por jocaro fecha: 28-09-2015 a las 11:47:17. Razón: Detallar un poco mas la pregunta
Responder Con Cita
  #2  
Antiguo 28-09-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Crea una nueva en cada iteración, ya que es local, no global.

Entiendo la confusión, ya que en algún lenguaje la memoria de las listas y cadenas se comparte o siempre es global, pero en el caso de Delphi no es así.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 28-09-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jocaro Ver Mensaje
Si en un procedimiento recursivo defino una matriz dinámica bidimensional, ¿en cada recursión estaré creando una matríz dinámica bidimensional distinta?,
Correcto.
Cada vez que llamas al procedimiento creas una nueva matriz.

Deberás pasarla como parámetro al procedimiento (por ejemplo) para tenerla disponible en las diferentes llamadas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 30-09-2015
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Poder: 13
jocaro Va por buen camino
Gracias a ambos por vuestra ayuda. Un saludo
Responder Con Cita
Respuesta



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
Array bidimensional dinámico harpo Varios 3 31-03-2015 15:11:17
Paso de Array Dinamico a Procedimiento por Referencia. eLYaN OOP 7 08-11-2008 23:40:39
Procedimiento recursivo Vlady SQL 0 05-06-2008 19:18:45
Liberar array bidimensional de botones Raze Varios 2 16-05-2006 13:45:14
pasar como parámetro un array bidimensional nsr048 Varios 2 08-11-2005 11:54:20


La franja horaria es GMT +2. Ahora son las 08:47:48.


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