Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - EdePC

#411
Hay dos opciones, una es poner el tipo de botón a submit que es el estándar para formularios y reacciona al Enter enviando el formulario, entonces tendrías que quitarle ese evento onclick y pasárselo al evento onsubmit del formulario, ya que cuando una da click en el botón de tipo submit de un formulario o presiona Enter estando dentro de él, automáticamente se ejecuta el evento onsubmit del formulario. Pero para evitar que el formulario "se envíe", se actualice la página y te vacíe los datos, hay que poner un preventDefault() al final de la función:

Código (html4strict) [Seleccionar]
<form onsubmit="myFunction()">
  Enter name: <input type="text">
  <input type="submit">
</form>

<script>
  function myFunction() {
    console.log('Hello')
    event.preventDefault()
  }
</script>


La otra forma es añadir el evento onkeyup o onkeypress al formulario o body para verificar si se a presionado el Enter y mandar a hacer lo mismo que hacia el onclick del botón. Me parece que había otra forma pero no la recuerdo bien XD
#412
Se me ocurre abrir el .csv como Objeto donde cada línea sería un Diccionario e ir iterando línea a línea creando/abriendo un archivo en modo Append (agregar al final) con el nombre de la Liga para luego agregar en él los Campos del Diccionario/Línea actual

partidos.csv
Citarcolumna1,columna2,columna3,columna4,columna5,liga
dato1,dato2,dato3,dato4,dato5,liga1
dato1,dato2,dato3,dato4,dato5,liga1
dato1,dato2,dato3,dato4,dato5,liga1
dato1,dato2,dato3,dato4,dato5,liga2
dato1,dato2,dato3,dato4,dato5,liga3
dato1,dato2,dato3,dato4,dato5,liga2
dato1,dato2,dato3,dato4,dato5,liga1

Código (python) [Seleccionar]
import csv, os

with open('partidos.csv') as f :
  df = csv.DictReader(f)
  for row in df :
    fieldnames = list(row)
    exists = os.path.exists(row['liga'] + '.csv')
    with open(row['liga'] + '.csv', 'a', newline='') as l :
      writer = csv.DictWriter(l, fieldnames=fieldnames)
      if not exists :
        writer.writeheader()
      writer.writerow(row)


1. Importo csv y os
3. Abro el archivo partidos.csv bajo el nombre de "f" en modo solo teto de lectura (por defecto)
4. Creo el Objeto DictReader a partir del archivo leído
5. Itero fila a fila (cada fila es un Diccionario) el Objeto DictReader
6. Creo un Diccionario con la primera línea del archivo csv que se supone es la cabecera de títulos (fielnames)
7. Creo una variable Boolean para comprobar si existe o no el archivo con el nombre de la Liga
8. Creo o Abro un archivo csv con el nombre igual a la Liga
9. Creo mi Objeto DictWriter para poder escribir líneas (cada línea es un Diccionario) en el archivo
10. y 11. Si el archivo no existía le agrego los títulos de columna (fieldnames)
12. Inserto la línea con los datos del Diccionario Fila

Aunque siempre se pueden solo extraer las Columnas (fielnames) que uno desee y no todas ...
#413
Jaja el problema viene por el mal-entendido de la pregunta inicial:

Cita de: desna en  5 Enero 2021, 10:41 AM

Tenia la flopy vacia y   la disquetera en el IDE1   , pero quiero usar este conector para poner unos discos IDE antiguos que tengo

¿Puedo poner la disquetera en el conector flopy?

saludos


Al menos yo siempre he considerado a la disquetera a esa de 3 1/2 (Floppy Disk - Disco Flexible), pero seguramente el mensaje inicial habla de la Lectora CD/DVD/BD XD.

Para todo lo demás @Simorg tiene razón, a parte ni van a entrar los conectores de los cables entre Floppy e IDE, tampoco he visto HDD con conector Floppy XD

También he visto adaptadores de IDE a SATA para conectar esos HDD IDE al nuevo conector SATA. Por otro lado veo que si tienes un puerto IDE libre y/o cable con conectores libres pues si se puede conectar, sería cosa de buscar en YouTube, por ejemplo este:

[youtube=640,360]https://youtu.be/nnJq6Rth5yU[/youtube]
#414
Pues tienes la última versión, ya será cosa de esperar, he visto que últimamente actualizaban cada ~10 días, pero en los peores casos tardaban hasta casi ~30 días.

+-------------+------------+-------------+---------+--------------------+
| Compilación | Fecha      | Canal       | KB      | Diferencia de días |
|-------------+------------+-------------+---------+--------------------|
| 19.042.685  | 08/12/2020 | Semi-Annual | 4592438 | 8                  |
| 19.042.662  | 30/11/2020 | Semi-Annual | 4586853 | 11                 |
| 19.042.631  | 19/11/2020 | Semi-Annual | 4594440 | 9                  |
| 19.042.630  | 10/11/2020 | Semi-Annual | 4586781 | 12                 |
| 19.042.610  | 29/10/2020 | Semi-Annual | 4580364 | 9                  |
| 19.042.572  | 20/10/2020 | Semi-Annual |         |                    |
|-------------+------------+-------------+---------+--------------------+
| 19.041.685  | 08/12/2020 | Semi-Annual | 4592438 | 8                  |
| 19.041.662  | 30/11/2020 | Semi-Annual | 4586853 | 11                 |
| 19.041.631  | 19/11/2020 | Semi-Annual | 4594440 | 9                  |
| 19.041.630  | 10/11/2020 | Semi-Annual | 4586781 | 12                 |
| 19.041.610  | 29/10/2020 | Semi-Annual | 4580364 | 16                 |
| 19.041.572  | 13/10/2020 | Semi-Annual | 4579311 | 12                 |
| 19.041.546  | 01/10/2020 | Semi-Annual | 4577063 | 23                 |
| 19.041.508  | 08/09/2020 | Semi-Annual | 4571756 | 5                  |
| 19.041.488  | 03/09/2020 | Semi-Annual | 4571744 | 23                 |
| 19.041.450  | 11/08/2020 | Semi-Annual | 4566782 | 11                 |
| 19.041.423  | 31/07/2020 | Semi-Annual | 4568831 | 17                 |
| 19.041.388  | 14/07/2020 | Semi-Annual | 4565503 | 26                 |
| 19.041.331  | 18/06/2020 | Semi-Annual | 4567523 | 9                  |
| 19.041.329  | 09/06/2020 | Semi-Annual | 4557957 | 13                 |
| 19.041.264  | 27/05/2020 | Semi-Annual |         |                    |
+-------------+------------+-------------+---------+--------------------+
#415
No le veo mucho sentido a tu código esa parte de 'leer, lo has leído y entendido bien?

Para responder tus preguntas finales habría que re-escribir casi toda esa parte dependiendo de tu objetivo final, a mi parecer quieres poner en los TextBox un User y Password, luego estos buscarlos en el Archivo y si están ir al Form2, caso contrario mostrar un Error.

- Veo que no has puesto un bucle para buscar en varios registros, aunque al parecer lo estabas poniendo

- Tus condicionales IF tiene una pinta muy rara, estás usando And donde debes usar Or y viceversa.

Para no irse por las nubes y no desvirtuar mucho tu código te pongo este ejemplo donde se lee solo el primer registro para verificar que el User y Password dados en los TextBox por parte del Usuario son iguales a los almacenados en el primer registro del Archivo:

Código (vb) [Seleccionar]
Private Sub Command2_Click() 'leer
 
  Dim Access As Authorize

  Fnum = FreeFile

  Open App.Path & "\members1.dat" For Random As #Fnum Len = Len(Access)
  Cont = LOF(Fnum) / Len(Access)

  For Pos = 1 To Cont
    Get #Fnum, Pos, Access
   
    If Trim(Text1.Text) = Trim(Access.uname) And Trim(Text2.Text) = Trim(Access.passwd) Then
      MsgBox "Bienvenido", vbInformation
      Form2.Show
      'Me.Hide
      Exit Sub
    End If
  Next

  MsgBox "El registro no existe", vbCritical, "No existe"
  Text1.Text = ""
  Text2.Text = ""
  Exit Sub

  Close #Fnum

End Sub


- Ahí he editado el For para que haga lea Registro a Registro, en cada leída va a comprobar si los datos puestos por el Usuario en los TextBox corresponden a los del Registro leído, para esto es buen idea usar Trim debido a que los datos de los TextBox y en particular del Registro leído va a tener varios espacios vacíos de relleno hasta completar 30 caracteres. Trim elimina los espacios.

-- Si los Registros coinciden simplemente termina el Sub dando antes el MsgBox de bienvenida y muestra el Form2.

-- Si los ningún registro coincide pasa a ejecutar la última parte que siempre muestra un MsgBox de Archivo/Registro no encontrado y vacía los TextBox.

Con respecto al SQL, pues dependerá de si se van a utilizar Datos Relacionados o Estructuras de Datos complejos, para este caso no lo veo necesario salvo que sea para practicar su uso.
#416
Que versión/compilación tienes? la última (visto hoy 2021-01-05) es la 19042.685 del 2020-12-08 (año-mes-día) ( https://docs.microsoft.com/en-us/windows/release-information/ )

Puedes descargar manualmente la Update desde la Windows Catalog: https://www.catalog.update.microsoft.com/Search.aspx?q=KB4592438
#417
Quizá en la misma aplicación permita detener las notificaciones, sino desde el administrador de tareas > Inicio, o eliminar/renombrar el .exe, etc.

Siendo un poco paranoicos yo revisaría también que mínimamente esté Firmado Digitalmente puesto que pertenece a Intel, revisar sus detalles y eso, no vaya a ser un "clon" XD.
#418
GNU/Linux / Re: Necesito ayuda con Kali Linux
4 Enero 2021, 00:42 AM
A simple vista me parece que estás usando un Usuario sin privilegios, quizá si haces un:
Código (bash) [Seleccionar]
sudo su

Por otro lado en esta página https://bytefreaks.net/gnulinux/bash/bash-killall-command-not-found-a-solutiondice que killall es parte de psmisc y se instala con:
Código (bash) [Seleccionar]
apt-get install psmisc
#419
https://www.vbforums.com/showthread.php?781115-RESOLVED-GetProcAddress-freezes-IDE
CitarCallWindowProc. That function is sending 4 parameters to SetWindowText. SetWindowText expect just 2 parameters. CallWindowProc can only be used with APIs that expect 4 parameters else crashes are inevitable

Pues como dice ahí, CallWindowProc envía 4 parámetros a SetWindowText, pero SetWindowText solo espera 2, entonces CRASH. CallWindowProc solo se utiliza para llamar a APIs que esperan 4 parámetros.

La alternativa que proponen es utilizar SendMessageA, este si usa 4 parámetros

Código (vb) [Seleccionar]
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Private Const WM_SETTEXT As Long = &HC

Private Sub Form_Load()
Dim lb As Long, pa As Long
  lb = LoadLibrary("user32")
    pa = GetProcAddress(lb, "SendMessageA")
    CallWindowProc pa, Me.hwnd, WM_SETTEXT, ByVal 0&, "hello"
  FreeLibrary lb
End Sub
#420
Has leído los detalles del mensaje de error? normalmente ahí dice el exe o dll que causó el error. También se guardan estos detalles en el Visor de Eventos > Registros de Windows > Aplicación

Lo primero que pensaría es Incompatibilidad de DLL, si estás usando una DLL que no es del propio instalador de Visual Basic es posible que Win10 tenga la versión más reciente y el VB sea de una versión anterior.

Si te es posible puedes subir una muestra de un proyecto muy simple que de ese error, para intentar replicarlo, ver su cola de llamadas y archivos cargados para detectar el problema.