SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: kelmax en Jueves 1 de Octubre de 2009, 23:13

Título: Insertar una cadena en otra
Publicado por: kelmax en Jueves 1 de Octubre de 2009, 23:13
El problema es el siguiente necesito que la cadena tenga un largo fijo (80) y el valor que trae es variable, como puedo hacer para que la cadena siempre tenga el largo que necesito.
Título: Re: Insertar una cadena en otra
Publicado por: Jimbenit en Viernes 2 de Octubre de 2009, 00:01
Cita de: "kelmax"
El problema es el siguiente necesito que la cadena tenga un largo fijo (80) y el valor que trae es variable, como puedo hacer para que la cadena siempre tenga el largo que necesito.
Una opcion es rellenar la cadena con espacios en caso de que sea una cadena mas corta...

por ejemplo:

Código: Visual Basic
  1.         Dim Cadena As String
  2.         Dim Nro_Caract As Integer
  3.  
  4.         cadena = "Buenos dias"
  5.         Nro_Caract = Len(cadena)  'El valor de Nro_Caracter = 11
  6.         If Nro_Caract < 80 Then
  7.             Cadena = Cadena & Space(80 - Len(Cadena))
  8.         End If
  9.  
  10.         MsgBox(Cadena & vbCrLf & Len(Cadena))
  11.  
  12.  
  13.  
algo asi.....
Título: Re: Insertar una cadena en otra
Publicado por: Nebire en Viernes 2 de Octubre de 2009, 00:44
Es aún más sencillo que el código que pone Jimbenit...
Basta declarar la cadena con el tamaño deseado así queda fija: Dim Cadena As String * 80
ejemplo con los 3 casos que se pueden dar...
Código: Visual Basic
  1.  
  2. Private Sub Command1_Click()
  3.     Dim Cadena As String * 80
  4.  
  5.     Dim subC As String
  6.     Dim k as byte
  7.  
  8.     ' caso 1 se asigna una cadena con menos caracteres, el resto queda relleno de espacios.
  9.     Cadena = "Hola_"
  10.     Cadena = Replace(Cadena, " ", "4")  'remplazamos los espacios libres por 4 para que se vea la longitud total
  11.     MsgBox Len(Cadena) & " " & Cadena
  12.    
  13.     'caso 2 cadena vacía: ahora está 'vacía' con 80 caracteres de espacio.
  14.     Cadena = ""
  15.     MsgBox Len(Cadena) & " " & Cadena
  16.    
  17.     ' caso 3 cadena más larga que el tamaño asignado a la cadena: se trunca al tamaño despreciando los caracteres de la derecha que exceden
  18.     For k = 1 To 100  ' 100 * 5= caracteres
  19.         subC = subC & "Hola_"
  20.     Next
  21.     Cadena = subC
  22.     MsgBox Len(subC) & " " & subC & vbcrlf & vbcrlf & Len(Cadena) & " " & Cadena
  23. End Sub
  24.  
  25.  
  26.  
Título: Re: Insertar una cadena en otra
Publicado por: F_Tanori en Viernes 2 de Octubre de 2009, 18:41
El metodo mas efectivo seria el propuesto por Nebire definiendo la logitud en la cadena, el de Jimbenit no es malo. y como extra tambien te propongo uno

Código: Visual Basic
  1. Function LPad(Cadena As String, Longitud As Integer, Optional Caracter = " ")
  2.     LPad = Right(Replace(Space(Longitud + 1), " ", Caracter) & Cadena, Longitud + 1)
  3. End Function
  4.  
  5. Function RPad(Cadena As String, Longitud As Integer, Optional Caracter = " ")
  6.     RPad = Left(Cadena & Replace(Space(Longitud + 1), " ", Caracter), Longitud + 1)
  7. End Function
  8.  
  9.  


Saludos
Título: Re: Insertar una cadena en otra
Publicado por: kelmax en Miércoles 7 de Octubre de 2009, 15:35
Muchas gracias a los dos su ayuda me ayudo era justo lo que necesitaba gracias.