Ver Mensaje Individual
  #1  
Antiguo 23-06-2006
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Reputación: 22
Bauhaus1975 Va por buen camino
Unhappy Lineas que no se ejecutan

Hola a todos!

Se me ha presentado un problema muy raro, la verdad. Trabajando con Delphi 6.
Estoy haciendo un procedimiento para insertar de manera ordenada elementos en una lista, trabajando con punteros. El problema es que hay algunas líneas ¡¡que no se ejecutan!!, incluso puede verse al ejecutar con el debug 'paso a paso'. En concreto son líneas que hacen referencia a la segunda variable de tipo puntero que hay definida en el procedimiento.

Estos son los tipos que se manejan
Código Delphi [-]
type
TC = ^itemC;
itemC = record
          Valor    : integer;
          Sgte     : TC;
end;

Y este es el mencionado procedimiento:
Código Delphi [-]
procedure TForm1.insertarOrdenado(Vector:TC;var Lista:TC);
// Insertamos el item Vector en la Lista de manera ordenada
// La ordenación es descendente (mayor valor al principio)
var
        Aux : TC;  // Puntero de avance principal
        AuxAnt : TC; // Puntero de avance secundario (un elemento por detrás de 'Aux)
        Pivote : integer;
begin
 Pivote := Vector.Valor;
        // Si la lista está vacía inserta el item directamente
 if (Lista = nil) then
                begin
  Lista := Vector;
        end
 else
         begin
                New(Aux);
                New(AuxAnt);
         Aux := Lista;
                AuxAnt := nil; // Esta linea no se ejecuta
                // Recorremos la lista de punteros hasta encontrar el sitio
         while ((Aux <> nil) and (Pivote < Aux.Valor)) do
                        begin
                        AuxAnt := Aux; // Esta linea no se ejecuta
          Aux := Aux.Sgte;
         end;
         // Aquí se inserta el elemento
                Vector.Sgte := Aux;
                AuxAnt := Vector; // Esta linea no se ejecuta
        end;
end;

¿Se puede manejar más de un tipo puntero en un procedimiento?
Supongo que sí, pero como esto es tan raro....

Bueno, a ver si alguien puede echarme un cable.
Muchas gracias y un saludo.
Responder Con Cita