Bauhaus1975
23-06-2006, 18:10:14
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
type
TC = ^itemC;
itemC = record
Valor : integer;
Sgte : TC;
end;
Y este es el mencionado procedimiento:
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.
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
type
TC = ^itemC;
itemC = record
Valor : integer;
Sgte : TC;
end;
Y este es el mencionado procedimiento:
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.