Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' Gambas class file
- Public Sub _new()
- End
- Public Sub Form_Open()
- ButtonTexto.Drop = True
- PictureBox1.Drop = True
- TextArea1.Wrap = True 'para que el texto mas ancho que el control se escriba completo
- PictureBox1.border = Border.Plain
- PictureBox1.Stretch = True 'la imagen se adapta al picturebox
- End
- Public Sub PictureBox1_Drop()
- arrastreImagen(PictureBox1)
- End
- Public Sub ButtonTexto_Drop()
- Dim ruta As String
- ruta = TomaArchivosSoltados((Drag.Paste("text/uri-list")))
- Try TextArea1.text = File.Load(ruta)
- If Error Then
- Message.Info("Se ha producido un error al leer el archivo")
- Endif
- End
- '-------------------------------------------------------------
- 'subrutinas necesarias para extraer la ruta del fichero
- '-------------------------------------------------------------
- Private Sub arrastreImagen(pic As PictureBox)
- Dim ruta As String
- ruta = TomaArchivosSoltados((Drag.Paste("text/uri-list")))
- Try Pic.Picture = Picture.Load(ruta)
- If Error Then
- Message.Info("Se ha producido un error al leer el archivo")
- Endif
- End
- Public Sub TomaArchivosSoltados(ruta As String) As String
- ruta = Replace(ruta, "\n", "")
- ruta = Replace(ruta, "\r", "")
- ruta = Right$(ruta, -7) 'Quitamos el file://
- ruta = ConvierteRuta(ruta) 'Decodificamos de html a ruta entendible
- ruta = Replace(ruta, "\x00", "") 'ese caracter me da problemas
- Return ruta
- End
- Private Function ConvierteRuta(txt As String) As String
- ''' Función de jguardon en gambas-es
- ''' Descodifica los caracteres hexadecimales en las URI's recorriendo la cadena dada
- ''' Params: txt la URI a descodificar
- ''' Return: la URI descodificada
- Dim txt_len As Integer
- Dim i As Integer
- Dim ch As String
- Dim digits As String
- Dim resultado As String
- resultado = ""
- txt_len = Len(txt)
- i = 1
- Do While i <= txt_len
- ' Examinar el siguiente caracter
- ch = Mid$(txt, i, 1)
- If ch = "+" Then
- ' Convertir a espacio
- resultado = resultado & " "
- Else If ch <> "%" Then
- ' Normal, no cambiar
- resultado = resultado & ch
- Else If i > txt_len - 2 Then
- resultado = resultado & ch
- Else
- ' Obtener los siguientes caracteres hex.
- digits = Mid$(txt, i + 1, 2)
- ' Debug digits
- ' aquí convertimos el valor hexadecimal a entero y
- ' se lo pasamos a Chr que devuelve el carácter correcto.
- resultado = resultado & Chr$(CInt(Val("&" & digits)))
- i = i + 2
- Endif
- i = i + 1
- Loop
- Return resultado
- End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement