FUNCTION PosInserC (Ordena:tInfo; L:tLista):tLista;
VAR
   T:tLista;
BEGIN
     T:= L;
     IF NOT (ListaCVacia(L)) THEN
        BEGIN
             WHILE (Ordena.DirIP >= L^.Info.DirIP) AND (L^.Sig <> T) DO
                   BEGIN
                        T:= L;
                        L:= L^.Sig;
                   END;
             IF (Ordena.DirIP >= L^.info.DirIP) THEN
                T:=L;
        END;
     PosInserC:= T;
END;
 
 
hago un insertar ordenado de los ordenadores en mi lista xq deben estar ordenados por su IP
PROCEDURE InserOrdenC (Ordena:tInfo; VAR L:tLista);
VAR
   A,N:tLista;
BEGIN
     N:= CrearC(Ordena);
     IF ListaCVacia(L) THEN {Inserta si esta la lista vacia}
        L:= N
     ELSE
       BEGIN
         A:= PosInserC(Ordena,L);
         IF NOT (ExisteOrdenador(L,Ordena.DirIP)) THEN
              IF (A = L) THEN {inserta ultimo}
                 BEGIN
                      N^.Sig:= L;
                      L:= N;
                 END
              ELSE
                  BEGIN
                       N^.Sig:= A^.Sig;
                       A^.Sig:= N;
                  END
       END
END;
 
 
pido los datos y les voy añadiendo a la lista.
PROCEDURE AnadirOrd(Ordenador:tInfo; VAR Lista:tLista);
VAR
   SistOp:Char;
   IP:Integer;
   Busc:tLista;
   Duplicado:Boolean;
BEGIN
     WriteLn('Introduzca los datos del nuevo equipo: ');
     WriteLn('Nombre Simbolico: ');
     ReadLn(Ordenador.NombreSimb);
     WriteLn('Nombre Propietario: ');
     ReadLn(Ordenador.NombreProp);
     WriteLn('Direccion IP: ');
     ReadLn(Ordenador.DirIP);
     Duplicado:=ExisteOrdenador(Lista,Ordenador.DirIP);
     IF (Duplicado) THEN
      BEGIN
         WriteLn('La Direccion IP ya existe');
         ReadLn;
      END
     ELSE
        BEGIN
          InserOrdenC (Ordenador,Lista);
          WriteLn('Ordenador insertado');
          ReadLn;
        END
END;
 
 
 1º PROBLEMA: inserta uno y al insertar el segundo se queda colgao.--> ahora para que me lo copie al fichero hago lo siguiente:
PROCEDURE AlmacenarDatos (Info:tInfo;Lista:tLista;VAR F:Text);
VAR
    AuxL:tLista;
BEGIN
      IF ListaCVacia(Lista) THEN
    WriteLn('la lista esta vacia')
      ELSE BEGIN
         AuxL:=Lista^.Sig;
         WHILE (Lista<>AuxL) DO
          BEGIN
              Write(F,Lista^.Info.NombreSimb,'#');
              WriteLn(F,Lista^.Info.DirIP,'#');
              WriteLn('El fichero ha sido escrito con los datos de la lista');
              ReadLn;
          END;
          AuxL:=AuxL^.Sig;
      END;
END;
 
 
PROCEDURE EscribirF (VAR F:Text;Lista:tLista);
VAR
     Info:tInfo;
BEGIN
     Assign(F,'Config.txt');
     {$I-}
     Rewrite(F);
     {$I+}
     IF (IORESULT <> 0) THEN
        BEGIN
             Writeln('Se ha producido un fallo en la apertura del fichero');
             Readln;
        END
     ELSE
         AlmacenarDatos(Info,Lista,F);
     {$I-}
     Close(F);
     {$I+}
     IF (IORESULT <> 0) THEN
        BEGIN
             Writeln('Se ha producido un error en el cierre del fichero');
             Readln;
        END
END;
 
 
 2º PROBLEMA: no me escribe nada en el fichero.Alguien me podria hechar una mano???con listas simples se las condiciones de parada y eso pero con esta al ser circular, llega al final cuando aux señala a L pero no me sale.
GRACIAS