Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Formateador De Texto Para Informes
Autor Mensaje
Responder citando   Descargar mensaje 
Mensaje Formateador De Texto Para Informes 
 
En varias ocasiones he necesitado formatear texto "cadena" dividiendolo en un máximo de líneas "numLineas" con unas longitudes máximas determinadas "longitudlinea".

Esto me ocurre cuando tengo que cumplimentar un formulario al que se le otorga un tamaño físico determinado mientras que el texto que hay que introducir en él resulta ser de cualquier tamaño posible.

La siguiente función tiene como parámetros de entrada:

La cadena que deseamos formatear, el número máximo de líneas que permite nuestro espacio en el formulario y la máxima longitud de las líneas en número de caracteres permitidos.

La función nos devuelve un string con la nueva cadena perfectamente formateada.

El texto que no quepa es desechado

Espero que alguien se pueda beneficiar de esta función.



PUBLIC FUNCTION formateaCadena(cadena AS String, longitudlinea AS Integer, numLineas AS Integer) AS String

  DIM longitudCadena AS Integer 'número de caracteres de la cadena a presentar
  DIM i AS Integer
  DIM caracter AS String
  DIM pos AS Integer 'posición del caracter dentro de la línea
  DIM espacio AS Integer 'distancia en caracteres hasta el último espacio de la línea
  DIM linea AS Integer
  DIM nuevacadena AS String

  'inicializamos variables
  longitudCadena = Len(cadena)
  nuevacadena = ""
  pos = 0
  i = 1
  linea = 1
  
  WHILE i < longitudCadena + 1 AND linea < numLineas + 1
  
      'si nos encontramos con un CR lo imprimimos y nos
      'posicionamos al principio de la línea siguiente
      IF Mid$(cadena, i, 1) = "\n"
        pos = 0
        INC linea
      ENDIF
      
      'si superamos la máxima longitud de la  línea, buscamos el último espacio
      'para partir la línea en ese punto
      IF pos = longitudlinea THEN
          espacio = RInStr(nuevacadena, " ")
          nuevacadena = Mid$(nuevacadena, 1, espacio - 1)
          nuevacadena &= "\n"
          i = Len(nuevacadena)
          pos = 0
          INC linea
      ENDIF
      
      caracter = Mid$(cadena, i, 1)
      IF pos = 0 AND caracter = " " THEN
      ' nos saltamos los espacios al principio de línea
      ELSE
      nuevacadena &= caracter
      ENDIF
      INC pos
      INC i
  
  WEND  
  
  RETURN nuevacadena
  
END
 

 



 
última edición por jsoto61 el Lunes, 15 Febrero 2010, 20:47; editado 3 veces 
jsoto61 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Informes Cubel General 0 Miercoles, 03 Marzo 2010, 11:31 Ver último mensaje
Cubel
No hay nuevos mensajes InformeHtml: Clase Para Generar Informes D... jsbsan Aplicaciones/Fragmentos de Código 0 Lunes, 09 Abril 2012, 19:14 Ver último mensaje
jsbsan
No hay nuevos mensajes Imprimir Usando ClassLatex Para Obtener In... jsbsan Videotutoriales 0 Martes, 15 Enero 2013, 00:27 Ver último mensaje
jsbsan
No hay nuevos mensajes Informes calcena General 24 Lunes, 07 Octobre 2019, 09:10 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron