De cualquier forma, me refiereo a la que vos me das y la que yo pongo... son equivalentes...No no son equivalentes.
while (L.Long>0) and (L.List<>nil)esto es un agujero para bugs, si llegas a tener L mayor a los elementos que tienes, puede causar que dejes elementos sin dispose.
Ahora que lo pienso, talvez el pascal que yo tengo anda mal... saben de donde puedo bajarme uno que ande completamente bien?Supongo que tienes Turbo Pascal 7.... para la época que etamos, es horrible....
Yo uso turbo pascal 7 (Tambien intente con free pascal, pero sucede lo mismo). Todo el TDA Lista me lo dieron en la universidad, igual yo lo verifique denuevo, y para mi esta todo bien...Esta parte no me convence... hace que un algoritmo que debería ser simple sea demasiado complicado de seguir: :P Imagínate lo que pasaría si el algoritmo sería más complicado...
Que problema!
Aca les dejo el codigo de la lista en el procedimiento que me sale el error, quien sabe, talvez si hay un error....Código: Text
TipoPosicion=Integer; PtrLista=^NodoLista; NodoLista=Record Elem:TelemC; sig:PtrLista; end; Lista=Record List:PtrLista; Long:Integer; end; Procedure VaciarLista(Var L:lista); var temp:ptrLista; Begin while (L.Long>0) and (L.List<>nil) do Begin temp:=L.List; L.List:=L.List^.sig; EliminarElemC(Temp^.Elem); dec(L.Long); dispose(temp); end; L.long:=0; L.List:=NIL; end;