Alguien sabe si existe alguna forma para hacer eso en pascal (NO delphi)?
Algo directo, alguna funcion de alguna unit o algo. Ya se como hacerlo por proc.
Me refiero a, por ejemplo:
numerodeletras:= funcionquecuentaletras(string); donde string es una palabra.
Si string='casa' debe devolver 4.
gracias
Bueno, yo no uso Pascal y nunca lo eh usado, en pascal creo que seria lo mismo que en Delphi, no se, pero en modo consola se puede hacer asi.
program ContarCadenas;
{$APPTYPE CONSOLE}
uses
SysUtils;
//funcion que cuenta los numeros de caracteres de la cadena
function ContarCaracteresCadenas: String;
var
Contar: String;
begin
Contar := 'Numeros de caracteres';
WriteLn ('Los caracteres contados son: ', Length (Contar));
ReadLn;
end;
//iniciamos el programa y llamamos a la funcion
begin
ContarCaracteresCadenas;
end.
no se, espero que te sirva.
saludos...
StrLen de strings
uses strings,crt;
const cadena : PChar= 'casa';
begin
clrscr;
Writeln ('La cadena tiene: ',StrLen(cadena),' caracteres');
readln;
end.
Bueno, con length tambien servia, y no hay necesidad de llamar a una unit extra:
program bla;
var palabra : string;
begin
write ('introduce palabra: ');
readln (palabra);
writeln (length (palabra));
end.
Saludos
Los strings en Pascal (según me explicaron este cuatrimestre en la facu XD) tienen en su primer posición (string[0]) la longitud de la cadena, obviamente en formato char, basta con validar ese valor y listo.
Cita de: Lauta en 20 Julio 2008, 21:52 PM
Los strings en Pascal (según me explicaron este cuatrimestre en la facu XD) tienen en su primer posición (string[0]) la longitud de la cadena, obviamente en formato char, basta con validar ese valor y listo.
el primer caracter de un String,se guarda en la posición 0 del array:
| P | E | P | E |
0 1 2 3
Con la funcion length() tienes la cantidad de caracteres de un string, le pasas el string como parámetro y devuelve un int con la cantidad de caracteres...
Espero que te sirva...
Saludos!!
Cita de: kamsky en 21 Julio 2008, 18:08 PM
Cita de: Lauta en 20 Julio 2008, 21:52 PM
Los strings en Pascal (según me explicaron este cuatrimestre en la facu XD) tienen en su primer posición (string[0]) la longitud de la cadena, obviamente en formato char, basta con validar ese valor y listo.
el primer caracter de un String,se guarda en la posición 0 del array:
| P | E | P | E |
0 1 2 3
Eso es normalmente lo que se suele hacer, pero en pascal efectivamente un string tiene en su primera posición el número de caracteres que contiene y luego la palabra que quieras guardar, nunca me a dado por comprobarlo, pero me fío de mi profesor de universidad xDD
gracias a todos. anduvo con length :-*
Cita de: E0N en 23 Julio 2008, 14:14 PM
Cita de: kamsky en 21 Julio 2008, 18:08 PM
Cita de: Lauta en 20 Julio 2008, 21:52 PM
Los strings en Pascal (según me explicaron este cuatrimestre en la facu XD) tienen en su primer posición (string[0]) la longitud de la cadena, obviamente en formato char, basta con validar ese valor y listo.
el primer caracter de un String,se guarda en la posición 0 del array:
| P | E | P | E |
0 1 2 3
Eso es normalmente lo que se suele hacer, pero en pascal efectivamente un string tiene en su primera posición el número de caracteres que contiene y luego la palabra que quieras guardar, nunca me a dado por comprobarlo, pero me fío de mi profesor de universidad xDD
Yo lo quise comprobar, después de la respuesta de kamsky y cuando imprimía la posición 0 del string, no me aparecía, ni la longitud, ni la primer letra del string, sino un símbolo extraño... A veces un rombo, según la cadena que ingresaba cambiaba...
Lauta, eso es porque es un valor tipo char. Usa la funcion ORD para imprimir el numero tipo byte que corresponde a ese caracter y veras que es la longitud de la cadena.
uses crt;
var a:string;
begin
a:='cadena';
write(ord(a[0]));
readln;
end.
program lenght;
uses crt;
var apeynom: ansiString;
begin
clrscr;
writeln('Funcion Length ');
writeln;
writeln('Inserte su nombre completo: ');
readln(apeynom);
writeln;
write(' Su nombre tiene ');
write( length(apeynom), ' letras');
readkey;
end.
Espero que te sirva..