Ver Mensaje Individual
  #1  
Antiguo 17-11-2010
kikecg kikecg is offline
Miembro
 
Registrado: feb 2006
Ubicación: Madrid
Posts: 39
Reputación: 0
kikecg Va por buen camino
Leer texto caracter a caracter

Hola a todos.

Estoy creando un procedimiento almacenado en Interbase 7.5 y me encuentro con el siguiente problema:

Necesito generar una cadena de texto de un máximo de 160 caracteres. Generar la cadena no es problema, comprobar la longitud de la misma, tampoco, pero una vez que localizo que tiene más de 160 caracteres (cuando se da el caso), necesito "recortarla" a dicha longitud.

Mi idea era utilizar SUBSTR, pero está función solo soporta una cadena de 80 caracteres. Me pregunto si existe otra función que me permita tomar solo una parte de la cadena original, un equivalente al LeftStr de Delphi, por ejemplo.

Otra solución que me han propuesto es meterme en un bucle e ir copiando la cadena caracter a caracter, pero no me funciona:

Código SQL [-]
if (STRLEN(TEXTO) > 160) then
  BEGIN
    I = 1;
    V_AUX = '';
    WHILE (I <= 160) DO
      BEGIN
        V_AUX = V_AUX || TEXTO[i];
        I = I + 1;
      END
    TEXTO = V_AUX;
  END

Al compilar el procedimiento me indica "Invalid array reference", supongo que refiriendose a:
Código SQL [-]
TEXTO[i]
.

TEXTO está definida como VARCHAR de 160, quizá el problema esté ahí.

¿Alguien me puede dar una idea?

Muchas gracias, saludos a todos.
Responder Con Cita