[ Foro de Pascal ]

Corregir una lista

07-Jan-2018 18:10
Invitado (ivan)
1 Respuestas

Hola, perdonar pero es que llevo varios dias dandole vueltas a un ejercicio que tengo que hacer y me da error.  
Esto es lo que tengo hecho

 
PROCEDURE LeerHashtags (VAR registro:  TTwitter;   VAR fichero_texto:  text;   numero_tweets:  integer);
          VAR           
             control_indice, control_indice2:   integer;
             caracter:                          char;
         BEGIN
              assign(fichero_texto, RUTA_FICHERO_TWEETS_TEXTO);
              reset(fichero_texto);
              FOR control_indice := 1 TO numero_tweets DO
                  if not eoln(fichero_texto) then
                     BEGIN
                          read(fichero_texto, caracter);
                          for control_indice2:=1 to registro[control_indice].hashtags.numerohashtags do
                              BEGIN
                                  if (caracter = almohadilla) then
                                     REPEAT
                                     read(fichero_texto, caracter);
                                     registro[control_indice].hashtags.listahashtag[control_indice2] := registro[control_indice].hashtags.listahashtag[control_indice2] + caracter;
                                     UNTIL (caracter = espacio);
                              END;
                   END;
              close(fichero_texto);
           END;
 


El problema esta en que solo lee el primer hashtag del primer tweet, cuando tendria que leer todos y hacer una lista con ellos.
?Cual puede ser el error?


24-Jan-2018 23:23
Nacho Cabanes (+36)

Añade algún WriteLn que te ayude a comprobar qué valores van tomando tus variables, o depura paso a paso si tu entorno o permite. La lógica parece buena, pero la función no es autocontenida, sino que usa cosas como  "registro[control_indice].hashtags.numerohashtags", que son parámetros que recibe desde el exterior, y otra persona no podrá probarlo sin esa información adicional. Basta con que alguno de esos datos esté llegando de forma incorrecta para que la función parezca fallar... sin que sea realmente culpa suya.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)