PDA

Ver la Versión Completa : IndexOf


Javier13
15-11-2017, 21:55:01
Var
alfabeto: String;
maximo: Integer;
digito : string;

begin

alfabeto:='abcdefghijklmnñopqrstuvwxyz';
maximo:=Length(alfabeto);
valor:=alfabeto.IndexOf(digito);


Lo que quiero hacer es. Saber la posición del alfabeto para eso cheque que se utiliza TStringList lo utilize pero luego tuve unos problemas no se si me puedan ayudar para hacer un indice

Caminante
15-11-2017, 23:08:24
Hola

Y que problemas tuviste con el stringlist???

Saludos

Javier13
16-11-2017, 01:28:31
Mi código es este

var
alfabeto : String;//TStringList;
maximo : Integer;
valor : Integer;
begin

alfabeto:='abcdefghijklmnñopqrstuvwxyz';
maximo:=Length(alfabeto);
valor:=alfabeto.IndexOf(digito);

Quiero hacer 3 cosas
1.- es hacer el abecedario
2.- cuantos caracteres tiene el abecedario
3.- saber el índice del abecedario
El 3 es el que no me sale
y para saber el indice tienes que usar TStringList para usar IndexOf

Casimiro Notevi
16-11-2017, 10:19:47
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias por tu colaboración :)

Y recuerda poner los tags al código fuente, ejemplo:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

Y pon títulos descriptivos a tus preguntas, "indexof" no es ningún título que describa nada.
Saludos.

Javier13
16-11-2017, 17:39:17
Mi código es este

var
alfabeto : String;//TStringList;
maximo : Integer;
valor : Integer;
begin

alfabeto:='0123456789abcdefghijklmnñopqrstuvwxyz';
maximo:=Length(alfabeto);
valor:=alfabeto.IndexOf(digito);

Quiero hacer 3 cosas
1.- es hacer el abecedario
2.- cuantos caracteres tiene el abecedario
3.- saber el índice del abecedario
El 3 es el que no me sale
y para saber el indice tienes que usar TStringList para usar IndexOf

Casimiro Notevi
16-11-2017, 17:42:57
Creo que no se entiende lo que preguntas, ¿qué es "hacer el abecedario"? ¿qué es "saber el índice del abecedario"?

ecfisa
16-11-2017, 18:00:07
Hola Javier13.

El planteo está bastante confuso, pero a ver si se trata de algo así...

...
var
TS: TStringList;
maximo, valor: Integer;
digito: Char;
begin
digito := '9';
TS := TStringList.Create;
try
TS.CommaText := '0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,' +
'i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z';
maximo := TS.Count;
valor := TS.IndexOf(digito);
ShowMessageFmt('maximo: %d, valor: %d',[maximo, valor]);
finally
TS.Free;
end;
end;


Saludos :)

Javier13
16-11-2017, 18:34:49
Seria mas fácil la función ansipos?

ecfisa
16-11-2017, 19:03:56
Hola.
Seria mas fácil la función ansipos?
Si por supesto.


var
alfabeto: AnsiString;
digito: Char;
begin
alfabeto := '0123456789abcdefghijklmnñopqrstuvwxyz';
digito := '9';
ShowMessageFmt('maximo: %d, valor: %d', [Length(alfabeto), AnsiPos(digito, alfabeto)]);
end;


Saludos :)

hal1967
19-11-2017, 23:49:21
Todo muy bien y didáctico pero

Ya el alfabeto está definido, la A es 65, la B 66 y así vamos.

Ord('A') -64 // da 1

Si quieres saber la posición de cualquier letra en la variable x sería

Ord(x) - 64

o mejor

Ord(upcase(x)) - 64

... y con el espaÑol hemos topado

Entonces, un arreglo o mejor un string que no es lo mismo pero es igual

const
alfabeto : string = 'abcdefghijklmnñopqrstuvwxyz';

así la posicion de digamos la letra "j" la podemos encontrar con la función pos (o ansipos si tenemos algo de previsión)

pos('j', alfabeto) // ---> debe dar 10 (si no conté mal)

Digamos que deseas viajar en el tiempo y volver a los 70, entonces necesitas poder ubicar "Ll" y "ch"

la solución de https://www.clubdelphi.com/foros/image.php?u=7718&dateline=1443014892 (https://www.clubdelphi.com/foros/member.php?u=7718) ecfisa (https://www.clubdelphi.com/foros/member.php?u=7718) es la que vale.