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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 ... 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [65] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
641  Programación / .NET (C#, VB.NET, ASP) / Re: Cuál es la lógica del operador XOR en: 29 Junio 2015, 19:07 pm
engel lex No te ignoro, de hecho el comentario anterior era dirigido a ti, lo que pasa es que hice un copia y pega el alias y no me di cuenta que no era tuyo. :silbar:

En fin gracias  los dos

Vale ahora entiendo, gracias a esta explicación más mundana:
Código
  1. "es es hombre o es mujer, pero no puede ser ambos al mismo tiempo y siempre tinene que ser uno"

Sinceramente, ahora que lo veo, no sabría, en programación como usar esto. He visto códigos que lo usaban y sabía lo que hacían, es decir, el objetivo de su uso, pero no como opera este operador.

Por ejemplo:
Para pasar el valor A a B y el valor B a A.


Código
  1. A= 5
  2. B= 6
  3.  
  4. A = A Xor B
  5. B = B Xor A
  6. A = A Xor B
  7.  
  8. Ahora A= 6 y B= 5

No entiendo qué mente matemática retorcida puede ultramar tal propósito solo para pasar lo de A a B y viceversa, ni aún entendiendo el funcionamiento de dicho operador. En fin, será cosa de genios.

Nunca he estudiado  lógica proposicional, de hecho aunque he estudiado matemáticas, no tenía ni idea de esta rama, sí de la lógica en sí (aunque no la he tocado), pero no de Lógica proposicional.



Álgebra de Boole, lo explica genial gracias. A veces uno no sabe por donde tirar si no pregunta

https://es.wikipedia.org/wiki/%C3%81lgebra_de_Boole
642  Programación / .NET (C#, VB.NET, ASP) / Re: Cuál es la lógica del operador XOR en: 29 Junio 2015, 18:35 pm
Gracias Gh057 Y [/b]engel lex[/b], me lo has dejado más claro, voy entendiendo la lógica.

He comprendido lo de bit a bit con el 101 y 011, se compara dígito por dígito. Pero
porqué...
Código
  1. 1 xor 0 = 1
  2. 0 xor 1 = 1
  3. 1 xor 1 = 0
  4.  

es decir ¿porqué 1 xor 0 es 1?, lo entendería se fuera 1+0 =1
¿Porqué 0 xor 1  es 1? como antes si fuera 0+1= 1
Pero llega el 1 xor 1, ¿Porqué diantres es 0? Si resto rompe la regla anterior

Sl2


y 1 + 1 = es 10 en binario
643  Programación / .NET (C#, VB.NET, ASP) / Cuál es la lógica del operador XOR en: 29 Junio 2015, 18:21 pm
Hola

Bueno, pues eso. ¿cuál es la lógica?

Vamos a ver de:
5 xor 3 devuelve 6

Según la ayuda de MSDN es porque como 5 = 101 (en binario ) y 3 = 11 pues devuelve  
110 que es el equivalente binario de 6.

En fin, menuda explicación chorra. Yo creo que el/la que lo puso no tenía ni idea. Y si la tenía, se ha explicado como por el culo. Por que ha dicho lo mismo pero con binarios.

Y luego está esto:
"Realiza una exclusión lógica entre dos expresiones de tipo Boolean o bien una exclusión bit a bit entre dos expresiones numéricas."

Más de lo mismo, es peor que el lenguaje administrativo.


Una ayudita porfa
:-(
644  Programación / .NET (C#, VB.NET, ASP) / Re: Se puede prescindir de todas las funciones API en VB.NET en: 24 Junio 2015, 21:38 pm
Ok, gracias Elektro

Oye, en confianza, que lo de la "bronca" no me refería a tí , eh  ;)

Bueno la otra forma sería así:

Código
  1.  
  2. <DllImport("user32.dll", BestFitMapping:=False, CallingConvention:=CallingConvention.Winapi, CharSet:=CharSet.Unicode, EntryPoint:="user32")> _
  3.    Public Shared Function GetCursorPos(ByRef lpPoint As POINTAPI) As Boolean
  4.    End Function

Y establecer el siguiente Imports:
Código
  1. Imports System.Runtime.InteropServices

Evidentemente es lo que dices, aquí puedo establecer los parámentros de la llamada.

Pero quería decir que si funciona o realmente no hace falta establecer nada pues ya vale aunque sea al estilo de VB6, digo yo.



Bueno, sabiéndolo personalmente siempre buscaré la forma de no tener que usar funciones API.


645  Programación / .NET (C#, VB.NET, ASP) / Se puede prescindir de todas las funciones API en VB.NET en: 24 Junio 2015, 20:41 pm
Hola

Soy emigrante de VB6 a .NET, de hecho ya me han echado la "bronca" en varias ocasiones por usar la metodología de VB6 en .NET cuando no era necesario. He visto que se puede prescindir de algunas funciones API de Windows en .NET.  El caso es que no se cuales funciones ya están incluidas en .NET o no.

Una que ahora mismo estoy buscando es el GetCursorPos, para determinar la posición X, Y del puntero en el escritorio.

Llamando así funciona:

Código
  1.  
  2.    Structure POINTAPI
  3.        Public X As Integer
  4.        Public Y As Integer
  5.    End Structure
  6.    Private Declare Function GetCursorPos Lib "user32.dll" ( _
  7.    ByRef lpPoint As POINTAPI) As Integer
  8.  


Pero parace ser que es más de '.NET' ponerlo así:

Código
  1.   Public Structure POINTAPI
  2.        Public X As Integer
  3.        Public Y As Integer
  4.    End Structure
  5.  
  6.  <Runtime.InteropServices.DllImport("user32.dll")> _
  7.    Public Shared Function GetCursorPos(ByRef lpPoint As POINTAPI) As Integer
  8.    End Function

No se, me extrañaría que los de Microsoft, al construir .NET no hubieran establacido funciones internas de .NET para todas funciones incluidas en DLLs de Windows como USER32.DLL. y no tener que hacer estas llamadas.


Saludos y gracias



Pues nada que en dicho caso parece que es lo que digo:

Código
  1.  
  2. 'Posición X del cursor en el escritorio
  3.   Me.Text = Cursor.Position.X
  4.  


Fuente:
https://msdn.microsoft.com/es-es/library/system.windows.forms.cursor.position%28v=vs.110%29.aspx

No entiendo porqué, si como parece estoy en lo cierto, tanta gente postea y fomenta el uso de estas llamadas cuando no son necesarias

646  Programación / .NET (C#, VB.NET, ASP) / Eliminar elementos repetidos en un Array en: 22 Junio 2015, 18:23 pm
buenas..

¿Hay alguna forma de eliminar elementos repetidos en un Array?


Me he hecho una función, que me ha costado, el ingeniarlo quiero decir, que es la siguiente:


Código
  1.    Public Function DeleteArrayRepetitions(ByVal strArray1() As String, ByVal Sorted As Boolean) As Array
  2.        Dim strArray2(0) As String
  3.        Dim TempElement As String
  4.        Dim Count1 As Integer
  5.        Dim Count2 As Integer
  6.        For Each TempElement In strArray1
  7.            Count1 += 1
  8.            If Count1 = 1 Then strArray2(0) = TempElement
  9.            If Array.IndexOf(strArray1, TempElement, Count1) = -1 Then
  10.                ReDim Preserve strArray2(Count2)
  11.                strArray2(Count2) = TempElement
  12.                Count2 += 1
  13.            End If
  14.        Next
  15.        If Sorted = True Then Array.Sort(strArray2)
  16.        Return strArray2
  17.    End Function


Lo que hace es comprobar uno por uno los elementos del strArray1 y si no está repetido lo pasa al strArray2, hasta completar una lista sin repeticiones. Una vez el strArray2 está completo lo pasa a la función DeleteArrayRepetitions que también es un Array. Es decir, la función devuelve una lista sin repeticiones.



En un intento de reducirlo más, resulta que obtengo un código más o menos igual solo que esta vez usando Array.LastIndexOf en lugar de Array.IndexOf



Código
  1.    Public Function DeleteArrayRepetitions(ByVal strArray1() As String, ByVal Sorted As Boolean) As Array
  2.        Dim strArray2(0) As String
  3.        Dim Count As Integer = 0
  4.        Dim Count2 As Integer = 0
  5.        For Each Element In strArray1
  6.            Dim Last As Integer = Array.LastIndexOf(strArray1, Element)
  7.            If Count = Last Then
  8.                ReDim Preserve strArray2(Count2)
  9.                strArray2(Count2) = Element
  10.                Count2 += 1
  11.            End If
  12.            Count += 1
  13.        Next
  14.        If Sorted = True Then Array.Sort(strArray2)
  15.        Return strArray2
  16.    End Function




Para usarlo se hace los siguiente:

Código
  1.   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.        Dim Numbers() As String = {"1", "5", "5", "5", "4", "1", "12", "4", "55"}
  3.  
  4. 'Quita los elementos repetidos
  5.        Numbers = DeleteArrayRepetitions(Numbers, True)
  6.  
  7. 'Lista los elementos del Array en un ListBox
  8.        For Each Element In Numbers
  9.            ListBox1.Items.Add(Element)
  10.        Next
  11.    End Sub

El ListBox mostrará:

1
12
4
5
55


A pesar que las funciones funcionan bien, debe haber alguna forma más sencilla, alguna función en VBNET que permita hacerlo. He probado con Array y ArrayList, pero no he visto nada.

Sl2
647  Programación / .NET (C#, VB.NET, ASP) / Re: Subir imagen con WebBrowser en: 20 Junio 2015, 22:14 pm
Que tal esto:

Código
  1. Public Class Form1
  2.    Dim WB As New WebBrowser
  3.  
  4.    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  5.        Button1.Text = "Cargar página"
  6.        Button2.Text = "Upload Image"
  7.        Button2.Enabled = False
  8.    End Sub
  9.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  10.        WB.ScriptErrorsSuppressed = True
  11.        Try
  12.            WB.Navigate("http://www2.yapo.cl/ai/form/7?ca=15_s")
  13.            Me.Cursor = Cursors.WaitCursor 'Cambia el cursor a espera
  14.  
  15.            'Espera a que cargue la página
  16.            Do While (WB.ReadyState <> WebBrowserReadyState.Complete)
  17.                My.Application.DoEvents()
  18.            Loop
  19.  
  20.            If WB.ReadyState = WebBrowserReadyState.Complete Then
  21.                Me.Cursor = Cursors.Default 'Retorna el cursor normal
  22.                Button2.Enabled = True
  23.            End If
  24.        Catch ex As Exception
  25.            MsgBox("No se ha podido gargar la página")
  26.        End Try
  27.  
  28.    End Sub
  29.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  30.        Dim clElement As HtmlElementCollection = WB.Document.GetElementsByTagName("Input")
  31.        For Each Element As HtmlElement In clElement
  32.            Dim controlName As String = Element.GetAttribute("input").ToString
  33.            If Element.GetAttribute("name").Equals("file") Then
  34.                Element.InvokeMember("click")
  35.            End If
  36.        Next
  37.    End Sub
  38. End Class

No me acaba de gustar porque si metes mal la URL el segundo botón se activa igualmente, pero por ahí va la cosa. Crear un sistema de espera a que se cargue la página.

Por cierto, para este código NO necesistas introducir físicamente un WebBrowser en el formulario, gracias a :        Dim WB As New WebBrowser


De modo que puedes introducir datos y hacer clics a botones sin que se vea la página.




648  Programación / .NET (C#, VB.NET, ASP) / Re: Navegar con WebBrowser sin alojar archivos en caché en: 20 Junio 2015, 00:42 am

Si no necesitas navegar en la página entonces no necesitas usar IE (WebBrowser) ni el host de MSHTML ni nada parecido, puedes usar la Class HttpWebRequest/HttpWebResponse (entre otras) para realizar peticiones a una url y obtener la respuesta (el código fuente de la página).

➢ HttpWebRequest Class (System.Net) - MSDN
➢ HttpWebResponse Class (System.Net) - MSDN

....


Es justo lo que necesitaba gracias
649  Programación / .NET (C#, VB.NET, ASP) / Re: Navegar con WebBrowser sin alojar archivos en caché en: 20 Junio 2015, 00:09 am
Hola

Antes de nada, felicitarte Elektro por tu ayuda aquí, que es incalculable. Ya que te esfuerzas mucho y es de apreciar pues mucha gente contesta con monosílabos.

Parece que sabes mucho de esto. Perdona mi ignorancia y a ver si puedes decirme si este otro método podría servir, quizás algo chapucero:

Descargo la web con la función API, URLDownloadToFile y establecer BINDF_PRAGMA_NO_CACHE que según encontré en el MSN es :
  Value that indicates that the resource will not be stored in the Internet cache.

Alojo el archivo único en una carpeta temporal. Y luego lo abro con Webbrowser.

Código
  1.    Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
  2.    (ByVal pCaller As Integer, _
  3.     ByVal szURL As String, _
  4.     ByVal szFileName As String, _
  5.     ByVal dwReserved As Integer, _
  6.     ByVal lpfnCB As Integer) As Integer
  7.  
  8.    Const BINDF_PRAGMA_NO_CACHE = &H2000
  9.    Const ERROR_SUCCESS = 0
  10.  
  11.    Public Function GetCodeWEB(ByVal sURL As String) As String
  12.  
  13.        Dim sLocalTempFile As String = My.Computer.FileSystem.SpecialDirectories.Temp & "\file_web.html"
  14.  
  15.        If URLDownloadToFile(&H0, sURL, sLocalTempFile, ERROR_SUCCESS Or BINDF_PRAGMA_NO_CACHE, &H0) = ERROR_SUCCESS Then
  16.            Dim strBuffer As New System.IO.StreamReader(sLocalTempFile)
  17.            Return strBuffer.ReadToEnd
  18.            strBuffer.Close()
  19.        Else
  20.            GetCodeWEB = "Página no encontrada"
  21.        End If
  22.  
  23.  
  24.    End Function






En cuanto a lo del control WebBrowser es una ventana host  que como dices va con IE y lógicamente para mostrar el contenido web primer se alojan los archivos en el caché, para después cargarlo.

Sin embargo puedo usar...

Código
  1. Dim WB as new WebBrowser

...sin haber integrado ningún WebBrowser en el formulario.

Código
  1. Dim WB As New WebBrowser
  2.        WB.Navigate("http://...")
  3.        Dim CodeWeb As String = WB.DocumentText
  4.  

Aun así supongo que se guardan datos de caché, que era la duda que yo tenía.







650  Programación / .NET (C#, VB.NET, ASP) / Re: Obtener subida y bajada de Internet en Megabytes en: 19 Junio 2015, 23:33 pm
hola

No había caído, gracias. Aprecio tu aporte.


Como prueba he conectado el móvil para usarlo como modem y utilizar la conexión del mismo. El código sigue funcionado. He sustitiudo (0) por Firts.

Código
  1. ipv4Stats = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces.First.GetIPv4Statistics

Pero supongo que es lo mismo.


En cuanto al código que me das, me da error en la lína 14.

Código
  1. Dim ipv4Stats As IPv4InterfaceStatistics = GetEthernetAdapters.First.GetIPv4Statistics

Señala a GetIpv4Statistics y dice "La secuencia no contiene elementos"

Intentaré averiguar el índice de la red activa.


Sl2


Páginas: 1 ... 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [65] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines