Manejar String


Objetivo: Manejar String
Hola que tal... hace poco comence con gambas ... estube mirando la parte de "manipulacion de string" la parte de hexadecimal... y de seguro es uan boludez pero no logro comrenderlo ..

necesito pasar una cadena a hexadecimal.. segun lo que lei anterior mente seria

Hex(lalal) cosa que esta erronea ya que no sucede ..

se que se necesita una bucle y eso no ews problema ... si medan una manito se los agradeceria

saludos

Perfil MP  
Objetivo: Re: Manejar String
primero convertilo a numerico
luego pasalo a hexadecimal
hex
Devuelve un string qu e es la conversión al hexadecimal de un valor
x=hex(y) ====> x = valor hexadecimal de y



saludos

Perfil MP  
Objetivo: Re: Manejar String
Hola, aprovechando este hilo, como puedo convertir a Date lo que hay en un campo de texto?
el formato escrito es 01/01/2010, el cual deberia pasarlo a Date y despues cambiarle el formato a yyyy/mm/dd para insertarlo en MySQL.
Lo de convertirlo lo tengo claro, pero lo que no consigo es meter el String "01/01/2010" dentro de una variable Date.
el campo de texto se llama "fecha_txt" y la variable a insertarlo "fecha as date"

Objetivo: Re: Manejar String
como puedo convertir a Date lo que hay en un campo de texto?

Hola

Dispones de las funciones IsDate() y CDate() pero no me gusta porque traen bastantes problemas si no usas el separador barra y utilizan el formato de fecha anglosajón.

Así que yo me hice en su día una clase para estas pequeñas cosillas molestas y te lo pongo:

'función para comprobar si es fecha un string en formato dd/mm/yy
'contempla el caso de años bisiestos.
'devuelve true o false si es o no es fecha válida
PUBLIC FUNCTION EsFecha(f AS String) AS Boolean
DIM fe AS String[], del AS String, Mes AS Integer, Dia AS Integer, Anio AS Integer
DIM Dias AS Integer[] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
DIM Valido AS Boolean
IF Len(f) <> 8 THEN
valido = FALSE
ELSE
del = IIf(IsDigit(Mid(f, 3, 1)), Mid(f, 2, 1), Mid(f, 3, 1))
fe = Split(f, del)
IF fe.count <> 3 THEN
valido = FALSE
ELSE
TRY dia = CInteger(fe[0])
TRY mes = CInteger(fe[1])
TRY anio = CInteger(fe[2])

IF mes = 2 THEN 'si es bisiesto
IF anio MOD 4 = 0 THEN
IF anio MOD 100 <> 0 THEN
IF anio MOD 400 = 0 THEN
Dias[1] = 29
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
valido = IIf(dia <= Dias[mes - 1], TRUE, FALSE)
valido = IIf(valido & (mes < 13), TRUE, FALSE)
valido = IIf(valido & (anio > 0), TRUE, FALSE)

ENDIF
FINALLY
RETURN valido
CATCH
valido = FALSE
END


'función que recibe una fecha en formato MM/DD/YY y la convierte al formato español. El string de entrada acepta
'cualquier separador, pero la salida se hace con / para no tener problemas con funciones de fecha de gambas que solo'
'admiten ese separador.
Devuelve la fecha en formato DD/MM/YY si es posible. Si falta DD o MM o YY devuelve cadena vacía.
PUBLIC FUNCTION cfecha(f AS String) AS String
DIM fe AS String[], del AS String
IF Len(f) <> 8 THEN
f = ""
ELSE
del = IIf(IsDigit(Mid(f, 3, 1)), Mid(f, 2, 1), Mid(f, 3, 1))
fe = Split(f, del)
IF fe.Count <> 3 THEN
f = ""
ELSE
f = fe[1] & "/" & fe[0] & "/" & fe[2]
ENDIF
ENDIF
RETURN f
END


'función que recibe un string en formato XX/XX/YY
'El parámetro opcional Esp indica si la fecha está en formato español. Si Esp o nada se asume ESP=true
'Si Esp se asume DD/MM/YY. Si ESP es false se asume MM/DD/YY
'Devuelve la fecha en formato YY-MM-DDDD
'sirve para comparaciones sql de fechas
'admite cualquier separador de campos
PUBLIC FUNCTION FechaBd(F AS String, OPTIONAL Esp AS Boolean) AS String
DIM fe AS String[], del AS String, Mes AS String, Dia AS String, Anio AS String

del = IIf(IsDigit(Mid(f, 3, 1)), Mid(f, 2, 1), Mid(f, 3, 1))
fe = Split(f, del)

IF Esp THEN
dia = fe[0]
mes = fe[1]
ELSE
dia = fe[1]
mes = fe[0]
ENDIF
anio = IIf(Len(fe[2]) = 2, "20" & fe[2], fe[2])
RETURN anio & "-" & mes & "-" & dia
END


Tu respuesta por tanto es que utilices Cdate(expresión) pero ten en cuenta que requiere que los separadores sean / y que la fecha esté en formato MM/DD/YY o te dirá que no es fecha. Por eso la función CFecha devuelve un string con el delimitador / y con DD y MM cambiados. Si le envías una fecha en formato español te la devuelve en ingles. Si se las envías en formato ingles te la devuelve en español. Para Cdate la necesitas en ingles y con /.

Yo tengo una clase con estas y otras chorraditas. La inserto en mis proyectos y ya está.
Dim F as date
if MiClase.EsFecha(textbox.text) then 'si la fecha en formato español es fecha válida
F=cdate(Miclase.CFecha(textbox.text)) 'convertir la fecha a ingles con / y ponerla en F
endif




Un saludo

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1889s (PHP: 26% SQL: 74%)
Consultas SQL: 22 - Debug off - GZIP Activado