Pascal/Turbo Pascal - problema con validaciòn

 
Vista:

problema con validaciòn

Publicado por ale (2 intervenciones) el 10/05/2006 12:03:57
Hola estoy haciendo un proyecto en free pascal para la asignatura de programacion.Tengo que leer un archivo de texto y luego validar las palabras que aparecen en el con una serie de normas que nos han puesto(no debe contener caracteres alfabeticos,debe ser mayor que 4,debe contener una vocal y no puede repetir consonantes excepto la r,c y l)despues de validar debo introducir las palabras validas en una lista ordenada alfabeticamente y despues en cada palabra que me diga el bnumero de veces que a aparecido.Mi problema es el siguiente cuando hago la validacion de plabras las voy metiendo en un string por lo tanto cuando llega alos 256 caracteres ya no continua leyendo el documento y me quedan palabras sin validar,si alguien me pudiera decir como puedo hacer la validación de palabras con un array?? metiendolas directamente las palabras validas ya en lista?? .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

RE:problema con validaciòn

Publicado por Diego Romero (996 intervenciones) el 10/05/2006 18:26:24
Que sea un archivo de texto no quiere decir que tengas que leerlo con strings :).
Ya que el objetivo es trabajar con las palabras que contiene el archivo, ¿por qué no lo lees caracter a caracter?, metiendo cada caracter en un string hasta encontrar un token, el token podría ser: espacios en blanco, retorno de carro, avance de línea, final del archivo. Cada token marca el final de una palabra, cuando encuentras uno nada más tienes que trabajar con la palabra formada dentro del string que captura dichas palabras.

Veamos algo así:

const
token:set of char=[#13,#10,#32];

var
C: char;
S: string;
F: file of char;

begin
S:='';
assign(F, 'texto.txt');
reset(F);
while not Eof(F) do
begin
read(F, C);
if not (C in Token) then
S:=S+C
else
begin
ProcesarString(S);
S:='';
end; { else }
end; { while }
if S <> '' then ProcesarString(S);
Close(F);
end.

ProcesarString() sería el procedimiento donde desarrollarías las demás validaciones. En castellano no hay palabras que tengan más de 256 caracteres :P.
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

RE:problema con validaciòn

Publicado por ale (2 intervenciones) el 11/05/2006 09:59:10
Gracias por tu ayuda.

Ahora al validar, es decir a lo que llamas tu ProcesarString lo que me dice es STACK OVERFLOW ERROR, ¿sabes a que puede ser debido?, lo que intento es crear un procedimiento que llame a tres funciones, estas me devuelven cada una un booleano, si se dan las condiciones de las funciones pues continua y si no no.
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

RE:problema con validaciòn

Publicado por Diego Romero (996 intervenciones) el 11/05/2006 16:22:55
Sin el código fuente del programa que estás ejecutando es imposible saber dónde y por qué ocurre el stack overflow. Este error ocurre generalmente por dos motivos: exceso en la lista de parámetros de un procedimiento o función, o bien, se acaba el espacio de memoria destinado a almacenar la dirección de retorno en llamadas recursivas.
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