elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32
221  Programación / .NET (C#, VB.NET, ASP) / Re: pero como le asigno un valor monetario a una hora en: 7 Febrero 2016, 08:15 am
Hola

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        Dim fechaini As DateTime
  5.        Dim fechafin As DateTime
  6.  
  7.  
  8.        DateTime.TryParse(TextBox1.Text, fechaini) ' 12:00
  9.        DateTime.TryParse(TextBox2.Text, fechafin) '13:00
  10.  
  11.  
  12.        Dim dif As TimeSpan = fechafin - fechaini
  13.  
  14.        Dim Precio As Integer = 0
  15.        Dim TotalMinutos As Integer = (dif.Hours * 60 + dif.Minutes)
  16.        If TotalMinutos < 60 Or TotalMinutos = 60 Then Precio = 500
  17.        If TotalMinutos > 60 Then Precio = 500 + (CInt((TotalMinutos - 60) / 15)) * 150
  18.  
  19.        MsgBox(Precio)
  20.    End Sub
  21. End Class


Simplemente he añadido esto a tu código

Código
  1.  
  2. ...
  3. Dim Precio As Integer = 0
  4.        Dim TotalMinutos As Integer = (dif.Hours * 60 + dif.Minutes)
  5.        If TotalMinutos < 60 Or TotalMinutos = 60 Then Precio = 500
  6.        If TotalMinutos > 60 Then Precio = 500 + (CInt((TotalMinutos - 60) / 15)) * 150
  7. ...
  8.  
Basándome en lo que ha dicho:

Código:
por ejemplo un auto llego 12:00 y salio 13:00 = 01:00  estuvo una hora el cobro seria $500 

¿si el vehículo estuvo ejemplo llego  12:00 y salio 12:15 = estuvo 15 minutos pero igual se le cobra los $500?

Lo que hago es obtener el total de minutos y establezco la condición de que si el total de minutos es menor o igual de 60 (o sea una hora) pues el Precio sea igual a 500.

Por otro lado también dices que:

Código:
entoces cada 15 minutos depues de la hora deberia cobrarse $150 

Entonces establezco la condición de que si ha pasado más de una hora es decir más de 60 minutos entonces, resta 60 minutos del total que son los 500 y luego divide el resto por 15 para obtener el número de cuartos de hora.  El resultado lo multiplica por 150, ya que como has dicho cada quince minutos después de la hora se multiplica por 150.  (:-( esto me recuerda a los problemas de mates...). Finalmente suma 500 más el producto del total de cuarto de horas por 150.

Por ejemplo:
De 12:00 a 12:15   --->  es igual a 15 minutos  < 60 min.  ---> Precio = 500
De 12:00 a 13:00   --->  es igual a 60 minutos  = 60 min.  ---> Precio = 500
De 12:00 a 13:10   ----> es igual a 70 minutos > 60 min  ---> Precio = 500 + CInt((70-60)/15)*150 = 500 ... ya que 70-60 = 10 minutos y CInt(10/15) = 0 cuartos de hora.

De 12:00 a 13:30 ---> .... > 60 min.  ----> Precio = 500 + CInt((90-60)/15)*150 = 800 ya que 90-60= 30 minutos y CInt(30/15) = 2 cuartos de hora,  2 * 150= 300
y 500 + 300 = 800

(es una versión muy simplificada de la función CalculateMoney de Elektro  . Pero que conste que la vi después, eh  :laugh:)

Sl2s





 
222  Foros Generales / Foro Libre / Re: la bruja que exorciza los virus de tu computadora en: 26 Enero 2016, 09:26 am
HOLA

Pero esto de que va de la bruja o de terroristas XD

Bueno, yo no voy a entrar en conspiraciones gubernamentales porque no se ni papa del tema pero de curanderos, brujas/os, exorcistas, y timadores de lo sobrenatural, si.

Por ejemplo, si yo afirmo que puedo curar a un enfermo de X enfermedad poniendo solamente en su frente mi mano, y hago esto con mucha gente, un porcentaje de estos se curarán, por la razón que sea; que no estuvieran realmente enfermos, porque paralelamente realizaban algún tipo de auténtico tratamiento contra dicha enfermedad o por efecto placebo. Cuanta más gente tratase más probabilidad habría que al imponer mi mano alguien se curara. Obviamente dicha persona por credulidad y sugestión creería que ha sido gracias a mi. Estas personas por voca a voca arrastrarían a otras víctimas hacia mi.

Algo idéntico ocurre con santos, amuletos de la suerte, etc. Cuanta más gente vaya y bese los pies del Santo de los... (lo que sea) pidiendo un deseo más probabilidad hay que alguien que le haya besado se le cumpla el deseo, pero no por besar al santo si no por puro azar y circunstancias que nada tiene que ver.  Hubiera ocurrido de igual modo, si no lo hubieran hecho. De igual modo, si en lugar de besar los pies del santo todos hubieran besado una piedra cualquiera, inevitablemente, al ser un grupo muy numeroso el que ha hecho, a alguien se le hubiera cumplido el deseo. El cual lo atribuirían a la piedra, echo que provoca que aún más gente al ver u oir que otros han cumplido su deseo vayan y hagan lo mismo. Con lo cual la probabilidad de éxito es aún mayor. Es más, si de todas esas personas nadie hubiera besado al Santo (o la piedra) a alguien se le hubiera cumplido el deseo igualmente.  Además, todas las personas alguna tendría una desgracia, que lógicamente no lo atribuirían a haber besado el Santo o la piedra, sino a otra cosa como ver un gato negro, pasar por debajo de una escalera o lo que sea. Ya que lo bueno lo asocian a aquello que creen les trae suerte, mientras que lo malo a aquello que creen les trae mala suerte.

Lo mismo ocurre con algunas Administraciones de Lotería en España. Que cuando toca en X administración, al año siguiente más gente compra en dicha administración, porque piensan que "reparte suerte", en consecuencia, al comprar más gente lotería, más probabilidad hay que nuevamente reparta un premio. Por haber un número mayor de personas de lo normal que poseen un número comprado en dicha administración de lotería.

De igual modo esta señora coloca una piedra en el ordenador de algún cazurro. El cual probablemente tenga un antivirus o no tenga en realidad ningún dichoso virus. El cazurro afirmará que antes que ella colocara la piedra su ordenador tenía un virus y que luego su ordenador se arreglo y ya no tenía virus. Hay que ver también si el 'hechizo' lo realiza a solas con el ordenador o no, ya que dicho tiempo lo podría  aprovechar para arreglarlo. En fin, se me ocurre mil cosas.

Las brujas, curanderos, exorcistas, etc. también deben su popularidad a la propaganda que les hace el cine, la TV  y la literatura, que hace que mucha gente crea en ellos.

En ocasiones esto es así porque contribuye a la creencia en Dios, en el "más allá". Se basa en un condicional, si las brujas existen, tienen poderes, hablan con espíritus y pactan con el diablo entonces.... la religión cristiana es verdadera, Dios existe y hay demonios y más allá...También por afán de lucro, si hago una película  sobre brujas, mejor que SÍ sean brujas y tengan poderes, den miedo o hagan cosas guays,  porque si no, la película es un truño y nadie irá a verla. ¿Te imaginas la película de 'El Exorcista' donde la niña no esté poseída sino que tenga una enfermedad mental desconocida, el cura aparezca como un idiota supersticioso que traumatiza a la niña y los padres como unos malos padres por mandar a su casa a un cura para intentar curar a la niña con una enfermedad que los médicos desconocen? Además que se abriera una ventana por el viento o se cayera un marco por estar mal colocado y creyesen que ha sido un demonio que creen que hay dentro de la niña... No habría morbo, y la película no hubiera recaudado ni la mitad de lo que lo ha hecho. Es más chulo que gire la cabeza, que levite y se meta un crucifijo por el ... en fin.

El truco del horóscopo funciona también con la probabilidad. Si yo afirmo algo muy general que puede ocurrirle a cualquier persona, y lo asigno a 'Capricornio' por ejemplo, de millones de personas que se consideren Capricornio, alguno de ellos se le cumplirá la predicción. Cuanta más gente lo lea, más probabilidad hay que cumplan mi predicción. Es como repartir números de 1 al 5 a diez personas y las oculten en su bolsillo sin que yo vea el número, y a cada una de ellas sin que la otra lo sepa le digo - Tú tienes un 5 - forzosamente acertaré con 2 de esas personas, ya que hay dos personas entre las diez que tienen un 5. Indudablemente un número es algo muy específico, pero si digo algo muy general como -Cuida tu dolor de espalda, podría ir a peor- o - Vigila esos dolores de cabeza...- Son cosas muy generales  y la probabilidad de acertar es muy alta; el dolor de espalda es muy común y también el dolor de cabeza.


Sl2s


 


223  Programación / .NET (C#, VB.NET, ASP) / Re: Normalizar un enlace de búsqueda de google en: 25 Enero 2016, 07:58 am
Hola

Cuando vi tu respuesta y nombraste la clase HttpUtility, fue una alegría, por fin lo que buscaba. Incluso te envié un mensaje de agradecimiento para no añadir más comentarios a este tema.

Pero mi alegría se convirtió en decepción al comprobar que dicha clase (HttpUtility) ne se encuentra dentro de System.Web, es más, en el enlace que facilitas HttpUtility Clase, abajo, en los comentarios, puede verse que un usuario tiene el mismo problema, del cual creo no aparece la solución. Se supone que forma parte de .NET Framework 4 pero desde luego al parecer en el mío no está.

Sl2s







224  Programación / .NET (C#, VB.NET, ASP) / Re: Problema con Expresiones regulares en: 24 Enero 2016, 10:02 am
Hola

Por fin me he podido poner a programar  ;-)

Perdona que sea tan cabezón, pero de verdad, no me gusta WebBrowser. Y como comenté, según que páginas no me devuelve todas los enlaces. No se porqué.

Finalmente esto es lo que usaré utilizando el sistema que me habéis comentado:

Código
  1.       '//Obtiene los enlaces
  2.        'Inicia regex para obtener el link src
  3.        Dim PatternImg As String = "<[^>]+(src)\s*=\s*""?([^"">]+)""?.*?>" '"(?i:<img.*?>)" '"<img(.*?)/>"
  4.        Dim MyRegexSRC As New Regex(PatternImg, RegexOptions.IgnoreCase)
  5.        Dim MyMatchSRC As Match = MyRegexSRC.Match(strCode)
  6.        While MyMatchSRC.Success
  7.            Dim ImgLine As String = MyMatchSRC.Groups(0).Value 'Obtiene una linea tal como: <img src="...\imagen.jpg">
  8.            Dim strLink As String = MyMatchSRC.Groups(2).Value 'Obtiene el link de una imagen
  9.  
  10.            'Inicia regex para obtener el ancho, alto y valor alt de una imagen a partir de la línea ImgLine
  11.            Dim PatternWidth As String = "<[^>]""?(?:[^>]+(width|height)\s*=\s*""?([^ "">]+)""?\s+(height|width)\s*=\s*""?([^ "">]+)""?)?(?:[^>]+(alt)\s*=\s*""?([^"">]+)""?)?" '"width=""(.*?)"""  "(?i:width="".*?.*?"")"
  12.            Dim MyRegexWidth As New Regex(PatternWidth, RegexOptions.IgnoreCase)
  13.            Dim MyMatchWidth As Match = MyRegexWidth.Match(ImgLine)
  14.  
  15.            Dim strWidth As String = MyMatchWidth.Groups(2).Value 'Obtiene el ancho
  16.            Dim strHeight As String = MyMatchWidth.Groups(4).Value 'Obtiene el alto
  17.            Dim strAlt As String = MyMatchWidth.Groups(6).Value 'Obtiene el valor Alt
  18.  
  19.            '....
  20.  
  21.            MyMatchSRC = MyMatchSRC.NextMatch() 'Continúe el bucle hasta la siguiente coincidencia.
  22.        End While

Sl2s y se agradece la ayuda.
225  Programación / Programación Visual Basic / Re: Como saber la direccion MAC Remota de un WINSOCK en: 23 Enero 2016, 02:02 am

How to get mac address with input ip address
226  Programación / .NET (C#, VB.NET, ASP) / Normalizar un enlace de búsqueda de google en: 23 Enero 2016, 01:05 am
Hola

No consigo obtener el enlace a los que redirecciona google por ejemplo:

Código:
https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiK3Ii9zr7KAhXD0RQKHekoC9kQFggcMAA&url=http%3A%2F%2Fwww.recursosvisualbasic.com.ar%2Fhtm%2Fvb-net%2F54-obtener-links-de-una-pagina-web.htm&usg=AFQjCNGMpwVIQ7z-vWEq6Urag9Vf_UAKGg&bvm=bv.112454388,d.d24

Redirecciona a...:

Código:
http://www.recursosvisualbasic.com.ar/htm/vb-net/54-obtener-links-de-una-pagina-web.htm


Yo utilizo el siguiente código para obtener el enlace al que redirecciona una determianda URL

Código
  1. #Region "Normalizar URL"
  2.    Public Function ResolverURL(ByVal strUrl As String) As String
  3.        Dim RedirectUrl As String = Nothing
  4.         strUrl = DecodeUrl(strUrl)
  5.        Try
  6.            Dim WebRequest As System.Net.HttpWebRequest = DirectCast(System.Net.HttpWebRequest.Create(strUrl), System.Net.HttpWebRequest)
  7.            With WebRequest
  8.                .UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"
  9.                'WebRequest.MaximumAutomaticRedirections = 1
  10.                .AllowAutoRedirect = True  '<==importante
  11.                '.ProtocolVersion = System.Net.HttpVersion.Version11
  12.                 .Method = "GET"
  13.                '.Timeout = 1000
  14.            End With
  15.  
  16.            Using webResponse As System.Net.HttpWebResponse = DirectCast(WebRequest.GetResponse, Net.HttpWebResponse)
  17.                RedirectUrl = webResponse.ResponseUri.AbsoluteUri
  18.                webResponse.Close() '<===importante
  19.            End Using
  20.        Catch ex As System.Net.WebException
  21.            If ex.Status = Net.WebExceptionStatus.NameResolutionFailure Then
  22.                MessageBox.Show("El Sitio no existe", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
  23.            End If
  24.        End Try
  25.        Return RedirectUrl
  26.    End Function
  27.   Public Function DecodeUrl(ByVal strUrl As String) As String
  28.        Dim HexCaracter As String()
  29.        HexCaracter = strUrl.Split(CChar("%"))
  30.        For I As Integer = 1 To HexCaracter.Length - 1
  31.            Dim Cr As String = HexCaracter(I).Substring(0, 2)
  32.            Dim newCr As String = Convert.ToChar(Convert.ToInt32(Cr, 16))
  33.            strUrl = strUrl.Replace("%" & Cr, newCr)
  34.        Next
  35.        Return strUrl
  36.    End Function
  37. #End Region
  38.  


Este código se usa del modo siguiente:
Código
  1. Public Class Form1
  2.  
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        TextBox1.Text = ResolverURL(URL)
  5.    End Sub
  6.  

Sin embargo no me funciona con los enlaces que ofrece Google en el listado de búsqueda.

S2s



Una forma que he ideado es esta:

Código
  1.  
  2.   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  3.        Dim strUrl as String = "https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwidgYbs98HKAhUJLhoKHRwBBzYQFggcMAA&url=https%3A%2F%2Fes.wikipedia.org%2Fwiki%2FAlbert_Einstein&usg=AFQjCNEpx7ZvmsTJayPwnY-RF0W1AbWLGw&bvm=bv.112454388,d.d2s"
  4.  
  5.         strUrl = DecodeUrl(strUrl)
  6.  
  7.        Dim uri As New Uri(strUrl)
  8.        Dim dirs As String = uri.GetComponents(UriComponents.AbsoluteUri, UriFormat.UriEscaped)
  9.  
  10.        Try
  11.            Dim dirArray As String() = dirs.Split(CChar("="))
  12.            For I As Integer = 1 To dirArray.Length - 1
  13.                If dirArray(I).Length > 4 Then
  14.                    If dirArray(I).Substring(0, 4) = "http" Then
  15.                        strUrl = dirArray(I).Replace("&usg", "")
  16.                        Exit For
  17.                    End If
  18.                End If
  19.            Next
  20.        Catch ex As Exception
  21.        End Try
  22.  
  23.        TextBox1.Text = strUrl
  24.  
  25. End Sub
  26.    Public Function DecodeUrl(ByVal strUrl As String) As String
  27.        Dim HexCaracter As String()
  28.        HexCaracter = strUrl.Split(CChar("%"))
  29.        For I As Integer = 1 To HexCaracter.Length - 1
  30.            Dim Cr As String = HexCaracter(I).Substring(0, 2)
  31.            Dim newCr As String = Convert.ToChar(Convert.ToInt32(Cr, 16))
  32.            strUrl = strUrl.Replace("%" & Cr, newCr)
  33.        Next
  34.        Return strUrl
  35.    End Function
  36.  

Pero mi intención es que conseguir un método general que sirva para cualquier URL sin afectar a URLs que no redireccionen. De otro modo tengo que hacer que el programa determine si es redireccionable y si lo es, si éste es de Google para aplicar el código que acabo de mostrar... Esto no me convence.




Bueno, lo he resuelto de la siguiente manera. Que como dije  obtiene la URL a la que redirecciona de forma selectiva. Si es de Google aplica un método y si no lo es aplica el otro.

Código
  1. #Region "Normalizar URL"
  2.    Public Function NormalizarUrl(ByVal strUrl As String) As String
  3.        strUrl = DecodeUrl(strUrl)
  4.        Task.Factory.StartNew(Sub()
  5.                                  If strUrl.Contains("www.google.es/url?") = True Then
  6.                                      '//Obtiene la Url a la que redirecciona
  7.                                      strUrl = ResolverUrlGoogle(strUrl)
  8.                                  Else
  9.                                      '//Si el Url redireciona a otra Url obtiene la Url a la que redirecciona
  10.                                      strUrl = ResolverURL(strUrl)
  11.                                  End If
  12.                                  ComboBox1.Invoke(DirectCast(Sub() ComboBox1.Text = strUrl, MethodInvoker))
  13.                              End Sub)
  14.  
  15.  
  16.        Return strUrl
  17.    End Function
  18.    Public Function DecodeUrl(ByVal strUrl As String) As String
  19.        Dim HexCaracter As String()
  20.        HexCaracter = strUrl.Split(CChar("%"))
  21.        For I As Integer = 1 To HexCaracter.Length - 1
  22.            Dim Cr As String = HexCaracter(I).Substring(0, 2)
  23.            Dim newCr As String = Convert.ToChar(Convert.ToInt32(Cr, 16))
  24.            strUrl = strUrl.Replace("%" & Cr, newCr)
  25.        Next
  26.        Return strUrl
  27.    End Function
  28.    Public Function ResolverUrlGoogle(ByVal strUrl As String) As String
  29.  
  30.        Dim uri As New Uri(strUrl)
  31.        Dim dirs As String = uri.GetComponents(UriComponents.AbsoluteUri, UriFormat.UriEscaped)
  32.        Try
  33.            Dim dirArray As String() = dirs.Split(CChar("="))
  34.            For I As Integer = 1 To dirArray.Length - 1
  35.                If dirArray(I).Length > 4 Then
  36.                    If dirArray(I).Substring(0, 4) = "http" Then
  37.                        strUrl = dirArray(I).Replace("&usg", "")
  38.                        Exit For
  39.                    End If
  40.                End If
  41.            Next
  42.        Catch ex As Exception
  43.        End Try
  44.        Return strUrl
  45.    End Function
  46.    Public Function ResolverURL(ByVal strUrl As String) As String
  47.        Dim RedirectUrl As String = Nothing
  48.        strUrl = DecodeUrl(strUrl)
  49.  
  50.        Try
  51.            Dim WebRequest As System.Net.HttpWebRequest = DirectCast(System.Net.HttpWebRequest.Create(strUrl), System.Net.HttpWebRequest)
  52.            With WebRequest
  53.                WebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"
  54.                'WebRequest.MaximumAutomaticRedirections = 1
  55.                WebRequest.AllowAutoRedirect = True  '<==importante
  56.            End With
  57.            Using webResponse As System.Net.HttpWebResponse = DirectCast(WebRequest.GetResponse, Net.HttpWebResponse)
  58.                RedirectUrl = webResponse.ResponseUri.AbsoluteUri
  59.                webResponse.Close() '<===importante
  60.            End Using
  61.        Catch ex As System.Net.WebException
  62.            If ex.Status = Net.WebExceptionStatus.NameResolutionFailure Then
  63.                MessageBox.Show("El Sitio no existe", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
  64.            End If
  65.        End Try
  66.        Return RedirectUrl
  67.    End Function
  68. #End Region
  69.  

Sirve para evitar errores al usar System.Net.HttpWebRequest o System.Net.WebClient con URLs que redireccionan.



NOTA:
He hecho algunas correcciones y modificaciones respecto al código que expuse ayer.
Disculpen las molestias


He añadido por ejemplo esta función:

Código
  1. Public Function DecodeUrl(ByVal strUrl As String) As String
  2.        Dim HexCaracter As String()
  3.        HexCaracter = strUrl.Split(CChar("%"))
  4.        For I As Integer = 1 To HexCaracter.Length - 1
  5.            Dim Cr As String = HexCaracter(I).Substring(0, 2)
  6.            Dim newCr As String = Convert.ToChar(Convert.ToInt32(Cr, 16))
  7.            strUrl = strUrl.Replace("%" & Cr, newCr)
  8.        Next
  9.        Return strUrl
  10.    End Function

Ya que yo creía que sólo había que sustituir "%3A" por ":" y "%2F" por "/". Entonces he visto otro enlace con "%3F" y comprendí que se trata de número de un carácter convertido a hexadecimal. Es decir 3A = 58 que equivale a ":" y 2F = 47 que equivale a "/". He hecho esa función para sustituir cualquier código hexadecimal por su carácter correspondiente. 


Por otro lado la función ResolverUrlGoogle tampoco estaba bien del todo . No todos los enlaces, pasados por split se encuentran el la posición 10 del array. Así que hago que  busque la url dentro del array. De todos modos aún no está perfecto  porque hay enlaces, aunque poco comunes, que se devuelven incompletos o con algún carácter demás.


Sl2s
227  Programación / .NET (C#, VB.NET, ASP) / Re: Problema con Expresiones regulares en: 25 Diciembre 2015, 19:23 pm
Hola y felices fiestas para quien las celebre

Gracias a todos por las respuestas. He tardado en responder porque ahora estoy currando y no he tenido tiempo para mí y para programar.

Tras probar varios sistemas me inclino por Regex.  XDocument es para XML y HtmlDocument me obliga a usar WebBroser y parsear desde  el evento DocumentCompleted y tarda un huevo  :-\

También he probado con mshtml.IHTMLDocument2:

Código
  1. Imports mshtml 'Debe agregarse la referéncia Microsoft.mshtml para que esté disponible
  2. Public Class Form1
  3.  
  4.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  5.        Dim CodeHtml As String = Nothing
  6.        Using CodeFromStream As System.IO.Stream = GetHttpStream("http://www.google.es")
  7.            '///Convierte Stream a String con codificación  EncodingHtml
  8.            Try
  9.                Dim streamRead As System.IO.StreamReader = _
  10.                            New System.IO.StreamReader(CodeFromStream, System.Text.Encoding.GetEncoding(name:="utf-8"))
  11.                CodeHtml = streamRead.ReadToEnd()
  12.                While CodeHtml = ""
  13.                    My.Application.DoEvents()
  14.                End While
  15.            Catch ex As Exception
  16.            End Try
  17.        End Using
  18.  
  19.        ' Obtain the document interface
  20.        Dim htmlDocument As IHTMLDocument2 = DirectCast(New HTMLDocument(), IHTMLDocument2)
  21.        ' Construct the document
  22.        htmlDocument.designMode = "On" 'Evita error script
  23.        htmlDocument.write(CodeHtml)
  24.        ListBox1.Items.Clear()
  25.  
  26.        'IMG
  27.        Dim allElements As IHTMLElementCollection = htmlDocument.body.all.Tags("img")
  28.        For Each element As IHTMLElement In allElements
  29.            Try
  30.                ListBox1.Items.Add(element.getAttribute("src"))
  31.                ListBox1.Items.Add(element.getAttribute("width"))
  32.                ListBox1.Items.Add(element.getAttribute("height"))
  33.                ListBox1.Items.Add(element.getAttribute("alt"))
  34.  
  35.            Catch ex As Exception
  36.            End Try
  37.        Next
  38.  
  39.        ' Dim imgElements As IHTMLElementCollection = htmlDocument.images
  40.        'For Each img As IHTMLImgElement In imgElements
  41.        ' ListBox1.Items.Add(img.href)
  42.        ' ListBox1.Items.Add(img.width)
  43.        ' ListBox1.Items.Add(img.height)
  44.        'Try
  45.        '  ListBox1.Items.Add(img.alt)
  46.        'Catch ex As Exception
  47.        ' End Try
  48.        ' Next
  49.  
  50.    End Sub
  51.  
  52.  
  53. #Region "Obtener código página"
  54.    Function GetHttpStream(ByVal url As String) As System.IO.Stream
  55.  
  56.        Dim MyWebRequest As System.Net.HttpWebRequest
  57.        Dim MyWebResponse As System.Net.HttpWebResponse
  58.        Dim CodeStream As System.IO.Stream = Nothing
  59.        Try
  60.            MyWebRequest = CType(System.Net.WebRequest.Create(url), System.Net.HttpWebRequest)
  61.            With MyWebRequest
  62.                .UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
  63.                '.Method = "GET"
  64.                '.Timeout = 10000
  65.                '.ProtocolVersion = System.Net.HttpVersion.Version10
  66.            End With
  67.            MyWebResponse = CType(MyWebRequest.GetResponse(), System.Net.HttpWebResponse)
  68.            CodeStream = MyWebResponse.GetResponseStream()
  69.  
  70.  
  71.        Catch ex As Exception
  72.            MessageBox.Show(ex.Message)
  73.        End Try
  74.  
  75.        Return CodeStream
  76.  
  77.    End Function
  78. #End Region
  79. End Class
  80.  


Pero no me devuelve el Width ni el Height. Siempre devuelve 0, no se porqué.

Por otro lado HtmlDocument NO devuelve todos los img, no sé por qué con algunas páginas no muestra todos los enlaces src siempre se deja algunos, cosa que no ocurre usando regex

Sldos
228  Programación / .NET (C#, VB.NET, ASP) / Problema con Expresiones regulares en: 19 Diciembre 2015, 19:12 pm
Hola

La verdad no comprendo como funcionan las expresiones regulares, pese a que hay ejemplos en la ayuda msdn.

Estoy intentando obtener la Url de las imágenes de una página html junto con los valores Width, height y alt.

El problema está en que no siempre está en el mismo orden. Es decir primero puede establecerse src después height, width y luego alt:

<img src="..." height="128" width="128" alt"..."/>

También:

<img src="..." width"128" height="128" alt"..."/>


O por el contrario, establecerse el width o el heigth antes que el src:

  <img width"128" height="128" src="..."  alt"..."/>

  <img height"128" width="128" src="..."  alt"..."/>


Utilizando el sistema de las expresiones regulares con Regex ocurre que sólo obtiene los valores siempre y cuando estén el orden establecido en el pattern:

Código
  1. Dim Pattern As String = "<img[^>]+(src)\s*=\s*""?([^ "">]+)""?(?:[^>]+(width|height)\s*=\s*""?([^ "">]+)""?\s+(height|width)\s*=\s*""?([^ "">]+)""?)?(?:[^>]+(alt)\s*=\s*""?([^"">]+)""?)?"
  2.  
  3.        Dim re As New Regex(Pattern, RegexOptions.IgnoreCase)
  4.        Dim m As Match = re.Match(code)
  5.  
  6.        While m.Success
  7.  
  8.            For I As Integer = 0 To m.Groups.Count - 1
  9.                ListBox1.Items.Add(m.Groups(I).Value)
  10.            Next
  11.  
  12.        End While


'¿Como puedo obtener los valores independientemente del orden en que se encuentren?

Necesito encontrar los valores Width, height independientemente de si están antes que el src o después


Gracias
229  Foros Generales / Dudas Generales / Re: Pedidos de almacén con carácteres extraños en: 15 Diciembre 2015, 15:42 pm
 :D
Gracias

Pues sí, era de la configuración regional. :¬¬

Sl2s
230  Foros Generales / Dudas Generales / Pedidos de almacén con carácteres extraños en: 13 Diciembre 2015, 18:44 pm
Hola

En la empresa donde trabajo los pedidos aparecen con símbolos extraños en sustitución de á,è,ó,...,ñ y ç, que son del tipo á, Ã-, etc
 
Creo que podría ser que el sistema tiene como configuración regional la alfabetización inglesa, pero no estoy seguro de si es por eso o del programa que imprime los pedidos.

¿Alguna idea?

Gracias
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines