Pascal/Turbo Pascal - Leer Registros

   
Vista:

Leer Registros

Publicado por Lucas (2 intervenciones) el 24/11/2011 13:16:39
Hola gente se me presento un problema y creo q es una pavada pero no le encuentro la vuelta:

Tengo que realizar un programa en Pascal que lea un archivo con mensajes, y ademas leer otro archivo con una lista de palabras.

la idea es mostrar cuando una palbra del mensaje esta incluida en el otro archivo

Ejem

Archivo Mensajes (contienen registros)
- hola mundo en pascal otras palbras
- sufro mucho en estos dias
- feliz halloween por la noche da miedo
-

Archivo Palabras (Tiene registro del tipo string[30])
- pascal
- sufro
-
-
-
En los dos primeros mensajes tengo palabras que se encuentran en el otro archivo asi q deberi devolver true cuando encuentre una palabra incluida en el otro archivo

cuando recorro el archivo mensajes obtengo el primer mensaje, luego obtengo la cantidad de palabras, despues hago un ciclo for y obtengo cada palabra a partir de su posicion en el mensaje

y con la palabra actual leo todo el archivo Palabras si hay alguna coincidencia me devuelve true , si no false

este es parte del codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function PalabraEsComun(palabra: TipoPalabra; VAR archComunes: TipoArchComunes): Boolean;
var
  palabraActual: TipoPalabra;
  resp:boolean;
begin
  resp:=false;
    While not EOF(archComunes) do begin
    Read(archComunes,palabraActual);
    write('  ',palabra,' = ',palabraActual);
    if (palabra = palabraActual) then begin
      resp:=true;
      break;
    end
    else
      resp:=false;
   writeln('     =>  ',resp);
  end;
  PalabraEsComun:=resp;
end;
 
procedure buscaPalNoComun(var archComunes:TipoArchComunes;var archTweets:TipoArchTweets);
var
  tweetActual:TipoRegTweets;
  i,j,cant:byte;
  palActual:TipoPalabra;
begin
  i:=1;
  j:=0;
  while not EOF(archTweets) do begin
  read(archTweets,tweetActual);
  cant := CantidadDePalabras(tweetActual.mensaje);
  for j:=0 to cant do begin
    ObtenerPalabra(tweetActual.mensaje, j, palActual);
    writeln(j);
    PalabraEsComun(palActual,archComunes);
  end;
  end;
end;


la primera palbra del mensaje la lee bien pero despues no lee las demas palbras del resto del archivo, En que parte me estoy equivocando?

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Leer Registros

Publicado por Lucas (1 intervención) el 24/11/2011 13:49:04
Sabia que era una pavada , lo que me pasaba era que una vez leido el archivo el puntero queda en fin de archivo, y cuando entraba al ciclo while y preguntaba si era fin de archivo era true y salia del bucle por eso no me mostraba nada despues de la primera palabra

solucion poner seek antes del ciclo

seek(ArchComunes,0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar