Pascal/Turbo Pascal - ¿Como leer un SRING usando solo el tipo CHAR?

   
Vista:

¿Como leer un SRING usando solo el tipo CHAR?

Publicado por Tate (5 intervenciones) el 06/12/2007 21:01:59
Tengo el siguiente problema: Necesito leer una cadena de caracteres que tenga al menos 2 caracteres y no mas de n (si tuviere menos de 2 o mas de n deberia pedirme que introduzca otra cadena de caracteres). Y para ello no puedo usar el tipo STRING, tan solo arrays de tipo char. No consigo controlar que deje de leer despues de pulsar Enter ni que deje de leer si la cadena es muy larga.
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:¿Como leer un SRING usando solo el tipo CHAR?

Publicado por Diego Romero (997 intervenciones) el 06/12/2007 23:44:18
La tecla enter devuelve el caracter #13. Podrías usar readkey; para detectar la tecla pulsada.
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:¿Como leer un SRING usando solo el tipo CHAR?

Publicado por Mechanic (181 intervenciones) el 07/12/2007 03:15:32
Mira esto. Talvez te ayude con algo.

program leer_sin_string;
uses crt;
var
Caracter: char;
Cadena : string;
begin
Cadena := '';
ClrScr;
Writeln('Intruduzca una palabra');
repeat
if KeyPressed then
begin
Caracter := ReadKey;
Write(Caracter);
Cadena := Cadena + Caracter
end;
until Caracter = Char(13);
Writeln;
WriteLn(Cadena);
ReadKey
end.
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:¿Como leer un SRING usando solo el tipo CHAR?

Publicado por Tate (5 intervenciones) el 07/12/2007 05:19:18
Muchas gracias. Yo pensaba que el retorno de carro era el caracter 10.
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:¿Como leer un SRING usando solo el tipo CHAR?

Publicado por Tate (5 intervenciones) el 07/12/2007 05:17:33
El objeto del programa es buscar en una sopa de letras una palabra. No se puede usar el tipo STRING para leer la palabra a buscar. Las sopas de letras vienen dadas en un fichero de texto. Pero, ese no es el problema. El problema viene cuando pretendo leer una cadena de CHAR por el Input del programa, me hace cosas raras. No me queda más remedio de usar STRING en esa parte del programa. Tengo que hacer el sigiente procedimiento solo con el tipo CHAR:

procedure leer_vector(var p:vector;var lp,ne:integer);
var
palabra:string[10];
ok:boolean;
i:integer;
c:char;
begin
ok:=false;
repeat
writeln;
write(' Introduzca la palabra que desea buscar: ');
readln(palabra);
if (length(palabra)=1) or (length(palabra)>9) then
begin
writeln(' Palabra no valida');
writeln;
end
else ok:=true;
until ok;
for i:=1 to length(palabra)+1 do
begin
p[i]:=palabra[i];
end;
lp:=length(palabra);
for i:=length(palabra)+1 to max do p[i]:='*';
writeln;
end;

Y no soy capaz. Se me escapa por ejemplo controlar si la cadena es demasiado largo y cosas asi. Necesitaria un procedimienti distinto a este de mis intentos:
program leer_vector(Input,Output);

type
vector = packed array[1..10]of char;

var
i,j,lp :integer;
ok : boolean;
p : vector;
c:char;

begin
ok:=false;
repeat
for i:=1 to 10 do p[i]:='*';
writeln;
write('Introduzca la palabra a buscar: ');
i:=1;
repeat
read(c);
if c<>chr(10) then p[i]:=c;
i:=i+1;
until (c=chr(10)) or (i>10);

writeln;
if (p[2]='*') or (p[9+1]<>'*') then writeln('­Palabra no valida!')
else begin
ok:=true;
end;
writeln;
writeln;
for i:=1 to 10 do write(p[i]);
until ok;
readln;
end.

Gracias tio.
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:¿Como leer un SRING usando solo el tipo CHAR?

Publicado por Mechanic (181 intervenciones) el 08/12/2007 01:39:52
Tate.
Por qué tienes dos notas con el mismo tema?

Yo te estoy contestando la nota de abajo.

Mejor sigamos con esta y ya no con la de abajo
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