|
Taller
|
| >> Taller >> Strings en Fenix by Danko |
Puesto que más de uno habrá tenido problemas con el uso de strings en Fénix, he decidido crear un documento explicativo de cómo funcionan, cómo hay que usarlos y qué pueden y no pueden hacer. Empecemos…
En fénix hay dos tipos de cadenas: las de longitud variable y las de longitud fija. Las primeras permiten almacenar textos a nuestro gusto sin estar limitado por un máximo de caracteres y su declaración se realiza mediante string nombrevariable. Las segundas requieren que se indique el número máximo de caracteres que podrá tener el texto, es decir, que en realidad al declararlo lo que hacemos es declarar un array de n caracteres: char nombrevariable[numcaracteres]. También se puede emplear la sintaxis char nombrevariable[]=”texto”. Al hacer esto último se declara un array de tantos elementos como caracteres contenga el texto. En realidad el tipo char equivale a byte, pero posiblemente en futuras versiones del compilador no se permita la declaración de textos con la palabra byte.
El principal problema que confunde a la gente, sobre todo a los que habían programado bajo Div2, es que los strings de fénix no corresponden a los strings de Div. Son, sin embargo, los chars los que realizan la función de los strings de DIV. Es importante saber que si en fénix ponemos string mivar[3] no estamos creando un string de 3 caracteres máximo, sino un array de tres strings de longitud variable (podríamos poner mivar[2]=”este es el elemento dos del array”).
Lectura de las cadenas
Para leer el texto contenido en las cadenas solo hay que usar el nombre de la variable, por ejemplo write(0,100,100,0,mivar).
Lectura de caracteres individuales
La lectura no lleva consigo ninguna problemática en ninguno de los dos casos:
Puede parecer un poco difícil de entender a simple vista, pero es muy sencillo. Prueba el siguiente ejemplo:
......PROGRAM pruebas_str;
......PRIVATE
......BEGIN
Modificación de las cadenas:
..........string mitexto = "Dinero"; // una cadena de longitud variable
..........char mitexto2[6] = "Juan"; // una cadena de 6 caracteres máx
..........string mitexto3[1] = "Casa", "Coche"; // tres cadenas de longitud variable
..........char mitexto4[1][5] = "Perro", "Marea"; // dos cadenas de 6 caracteres máx cada una
..........set_mode(m640x480);
..........write(0,10,10,0,"Carácter 2 de mitexto es: " + mitexto[1]);
..........write(0,10,20,0,"Carácter 2 de mitexto2 es: " + chr(mitexto2[1]));
..........write(0,10,30,0,"Carácter 2 de la segunda cadena de mitexto3 es: " + mitexto3[1][1]);
..........write(0,10,40,0,"Carácter 2 de la segunda cadena de mitexto4 es: " + chr(mitexto4[1][1]));
..........LOOP FRAME; END
......END
Para modificar una cadena simplemente hay que usar micadena=”texto”. Ten en cuenta que si trabajas con una cadena de longitud fija no deberás sobrepasar el número máximo de caracteres o se producirá un error.
Modificación de caracteres individuales:
Esta es la parte que quizá sea más confusa, aunque sabiendo unas pocas cosas evitaremos muchos de los problemas que nos puedan surgir:
Algunas consideraciones:
FIN. Por favor, perdonen las faltas y si hay algún error comuníquenmelo.
ALGUNAS FUNCIONES DE CADENA
find: Busca una subcadena dentro de una cadena y devuelve la posición de la primera aparición de la subcadena (la primera posición de la cadena es 0). En caso de que la subcadena no exista en la cadena, find() devuelve -1. int find(string cadena, string buscar) Parámetros:
substr: Devuelve una sub-cadena, es decir, un fragmento de la cadena que recibe, ubicado entre las posiciones inicio y final, inclusive. Si una de las posiciones indicadas es menor que 0 se considera la posición a partir de la derecha de la cadena, por lo tanto, la posición -1 corresponderá al último carácter, -2 al penúltimo, y así sucesivamente.
string substr( string cadena, int inicio, int final) Parámetros:
len: Devuelve el número de caracteres de la cadena que se pasa como parámetro. Int len(string cadena) Parámetros:
lcase: Devuelve la cadena que se pasa como parámetro con todos los caracteres en minúscula. Para pasar una variable a minúsculas es preciso hacer: variable = lcase(variable); . string lcase(string cadena) Parámetros:
ucase: Devuelve la cadena que se pasa como parámetro con todos los caracteres en mayúscula. Para pasar una variable a mayúsculas es preciso hacer: variable = lcase(variable); . string ucase(string cadena) Parámetros:
(como se muestra en la ayuda de Fénix)
cadena: Cadena de texto sobre la que se realizará la búsqueda.
buscar: Texto a buscar.
Si el inicio es menor que el final se intercambian sus posiciones.
substr() devuelve una cadena nueva, por lo tanto no altera el contenido de la cadena original.
cadena: Cadena de texto o una variable.
inicio: Número de carácter inicial.
final: Número de carácter final.
cadena: Cadena de texto o una variable.
cadena: Cadena de texto o una variable.
cadena: Cadena de texto o una variable.