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 - RiasChan

#1
Hola. perdon que colgue. Lo puse como dijiste pero comparado con el mio va igual, asi que regla basica 1 de la informatica "anda, no lo toques por que se rompe" jaja. O sae anda igual con numeros no multiplos que con multplos, lo ire viendo sobre la marcha. Esas matrices solamente traen el código, codigo que hace referencia a todo un recordset y en base a eso muestra info, incluso fotos.

Saludos y gracias, eso era sólo para una interfaz visual, que me esta enloquesiendo por las modificaciones, pero creo que quedará lindo.
#2
Primero gracias, me has ayudado mucho.

Pero segundo, no es una tarea ya no voy a la escuela hace rato, es un proyecto personal que ya tengo listo y andando, esto es parte de un recordset de access, traigo muchos datos desde el recordset, y la forma mas facil que tengo para trabajarlo es trayendo todos los códigos a un list box, y desde ahi deribo todo. El tema es que la primera vez que tengo que hacerlo de "a partes" por que en esos primeras 6 partes, pasan cosas muy "grandes" a nivel GUI y no puedo meter todo junto, y con cada click va cargando nuevas entradas.

Una vez q ya puse los 6 codigos donde deben ir, el resto ya se hace solo.

Pero de veras es lo que buscaba.

Tercero: ya lo tomo como desafio ver como termina. ME seria excesivamente fácil si ya hubiera trabajado con matrices, pero nunca las uso, uso otros metodos. Es la primera vez que realmente me es indispensable usar una matriz de esta forma (con ciclos simples me ha alcanzado siempre)


En fin, creí que seria algo que cuando la matriz estaba en "" es reasignar los valores predeterminados a las 3 variables, pero va mas alla de eso. Seguro mañana con tiempo lo saco. Mil gracias me fue de ayuda eterna.

EDIT: Esto va dsp del NExt:

If List1.List(k) = "" Then
k = 3
Index = 0
Items = 0
j = 0
End If

Gracias me salvaste la idea de actualizacion para mi soft
#3
aquí no se como seguir



Private Sub Form_Load()
Recorrido = 2
sumador = 0
List1.AddItem 23
List1.AddItem 56
List1.AddItem 19
List1.AddItem 3
List1.AddItem 4
List1.AddItem 5
List1.AddItem 6
List1.AddItem 9777
List1.ListIndex = 0
End Sub



Private Sub Command1_Click()
Dim j 'igualidad que mostrara el index
Dim i 'recorrido
j = 0
j = List1.ListIndex

For i = 0 To List1.ListCount - 1
If i = j Then
MsgBox List1.List(i)
j = j + 1
sumador = sumador + 1
End If

If sumador = 3 Then
sumador = sumador + 3

Exit For
End If
Next


End Sub


digamos sólo funciona hasta el corte de los primeros 3 pasajes de lal lista a otro objeto (una caja de texto en este caso en vez del label). Luego me pierdo. Ya no deberia empezar de 23 de nuevo, sino desde el 3,y  terminar en el 5.
#4
El problema que tengo es asi.

En una lista ya  tengo cargados datos (40 datos cargados en la lista por ejemplo, siempre en el mismo orden)

Y tengo 6 labels.

Lo que necesito es que al apretar un botón  me cargue en esos 6 labels los primeros 6 items de la lista y deje de recorrer la lista. Luego al apretar de nuevo, saque la info de los 6 labels y ponga lo que está en la lista del 7mo al 12 (o sea los otros 6), y así hasta terminar la lista. Cuando termina la lista, empieza de nuevo. Si encuentra algo en blanco pone un 0 en el label

En fin, que la recorra de 6, pare. Muestre. Muetre de 6. Pare, Muestre y así. cada vez que para es por que llegó a 6. Y cuando continúa es por que se le dio click de nuevo al botón.

Gracias.

#5
Hola, luego de enfriarme otros 30 dia, retomé esto y ya está la la causa (encontrada).

Resumen: El problema está al ejecutar directamente un archivo Bat (desconzoco si todos o solo ese) desde el ShellExecute. Me di cuenta por que decidí buscar archivos con los controles viejos Drive/Dir/file. Y éstos 3 me dejan en el txtPath literalmente  la ruta seleccionada, que termina en .LNK (yo el bat ese lo abro con un acceso directo). Entonces, tanto al instante de crearlo como al guardar y restaurar la preset, siempre es el LNK y al ejecutar el acceso directo funciona en todos los casos.

Pero el CommonControls, al poner un acceso directo ya me pone el vinculo directo en el txtpath, y de ahi todos los problemas de antes.

Ahora ¿¿por que??

En defnitiva, el problema está en el ShellExecute, o el método que use, al ejecutar directamente el BAT. Incluso ejectuando el accesodirecto que da al bat anda, pero el BAT en sí no... jamas vi algo tan extraño.
#6
para para, vos me estas diciendo que esto es para darle la interfaz comercial estandar de 2020 a cosas creadas con este lenguaje del 1998 ??????????????? O sea significa que puedo hacer mis programitas tipo windor 95 q todos me critican, con esta intefaz?????????
#7
Amigo perdon que te responda asi, pero creo que no me comprendes.No uso el CommonDialog para cargar la preset, El shellExecute lee desde un TXT, que está ahí, legible, y si copias y pegas manualmente y lo abres, peus abre el bat, pero el shellexecute no lo hace. En el momento que falla, es completamente independiente del CommonDialog.

Lo mas triste es que cuando si uso el commond dialog  si anda.

El único problema que tiene es que cuando cargas la preset, y le das play ahi no lee los bat. Solo los bat. En primera instancia desde el commond dialog (y sin tener la modificacion que me diste) tampoco tira error y anda bien- (Seguramente lo haga si el usuario pone cancelar... Aunque tampoco quedaria texto en el txtpath, por lo cual ya salteria con mi cartel de error propio al dar play al programa...

No entiendo que relación puede tener el ShellExecute con el CommonDialog, ya que el ShellEjexute usa un txt para cargar la referencia y usar el programa, no el CommonDialog, y la direccion traida por el CommondDialog al TXtpath esta correcta.

Y no no hay filtro, el programa trae y ejecuta cualquier cosa. Ya probe fotos musica, lo que sea, y lo abre con el programa asociado predetermiandamente.

De hecho trae y ejecuta todo correctamente
#8
Esto pone el Path del archivo en el TXT Path:

Dim cadenita
Dialogo.ShowOpen
txtPath.Text = Dialogo.FileName
txtSucia.Text = Dialogo.FileTitle
cadenita = Len(txtPath.Text)
If cadenita > 255 Then
MsgBox "La ruta de este programa es demasiado lejana, debe seleccionar una ruta más corta de destino", vbCritical
txtPath.Text = ""
Exit Sub
End If
c_var = 0


Cadenita es un simple método para que el cliente no me selecicone algo en la ultima subcarpeta del nucleo de system32 con 3000 subcarpetas previas.

txtsucia guarda el EXE, por que se usa para otra funcion del programa que no tiene problemas.

Si yo ahi le doy Play anda, anda con el ShellExecute:

Private Declare Function ShellExecute Lib "shell32.dll" Alias _
   "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
   ByVal lpFile As String, ByVal lpParameters As String, _
   ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
   
'---------- El boton Play:

ret = ShellExecute(Me.hwnd, "Open", txtPath, "", "", 3)


Ya ahi anda, sin problemas, el bat y lo que sea.

Luego este boton, Guarda los TXT en una base de datos:

Private Sub EntradaPreset()
   Dim rs As ADODB.Recordset
       If Not Conectar() Then Exit Sub
       Set rs = New ADODB.Recordset
           rs.Open ("Preset"), cn, adOpenKeyset, adLockOptimistic
           rs.AddNew
           rs!codigo = lblCodigoPreset
           rs!nombre = txtPreset
           rs!Path = txtPath
           rs!exenames = txtSucia
           rs.Update
           Set rs = Nothing
           Call contadorPreset
           Desconectar
End Sub


ContadorPreset es un bucle que guarda en otro registro un numero de codigo para no mezclar los registros de la BD


Luego, cargas esa preset desde el otro boton:

Private Sub LlamadaDeDatos()
Dim rs As ADODB.Recordset
Dim sql As String
If Not Conectar() Then Exit Sub
Set rs = New ADODB.Recordset
sql = "Select * FROM Preset WHERE nombre = '" + cboPreset.List(cboPreset.ListIndex) + "'"
rs.Open (sql), cn, adOpenKeyset, adLockOptimistic ' abre rs
txtPath.Text = ""
txtPath.Text = rs!Path
txtSucia.Text = rs!exenames
End If
Set rs = Nothing
Desconectar

end sub


Y le das play, con el primer ShellExecute, y anda con todos los archivos, excepto con el Bat Con el bat se cierra la ventana DOS al cargar los datos del Bat. El bat tiene esto:

setx GPU_FORCE_64BIT_PTR 0
setx GPU_MAX_HEAP_SIZE 100
setx GPU_USE_SYNC_OBJECTS 1
setx GPU_MAX_ALLOC_PERCENT 100
setx GPU_SINGLE_ALLOC_PERCENT 100
EthDcrMiner64.exe -epool us2.ethermine.org:4444 -ewal 0x8cce0e45e02439fe85f35b2235.MineraHanswellRX5epsw x -mport 0 -showdiff 1 -showpower 1 -dbg -1 -rxboost 0



Ahora, si desde el Examinar primero de todos que abre el CommonDialog, vuelves a seleccionar el archivo.bat (ya cargada la preset y con la falla) ... anda y no falla
, empieza a usar el bat sin problemas.

Tiene un par de cosas extrañas en los recordesets, pero si se consdidera que el ShellExecute toma la ruta completa y sin espacios ni carcateres ni barras de mas ni de menos, idénticos y funciona... pero no quiere funcionar con el bat... creo que el problma es algo del bat. Pero tampoco cuadara por que si se hace ese remedio casero si funciona... What Te FuAkckk



#9
Fail sorry. Arriba ultima
#10
Cita de: RayR en 25 Marzo 2020, 17:02 PM
No sé si aún te sirva, pero es bastante obvio que algo sí que es diferente en ambos casos, y es un error muy común cuando uno tiene poca experiencia. Siempre que uses cuadros de diálogo para abrir o guardar archivos, ten presente que te pueden cambiar el directorio actual (working directory).

Puedes ver que eso está ocurriendo en tu programa. Fíjate en tu video, en las ventanas de consola, desde dónde se están ejecutando los comandos del bat. Seguro alguno de esos comandos depende de la ruta, y por eso el error.

Hola. No creo, sigo pensando que es brujeria china. Desde el dia que dejé esto es por que me llené de odio luego de reever el codigo de las formas que sean, y no le encontré la vuelta. Hoy luego de?? 1 mes? decidí retomarlo, para intentar nuevamente y sigo sin encontrar respuesta. Me enfermé a tal punto que iba a directamente a rehacer el proyecto, pero me calmé y pensé un poco:

Situacion: No hay forma, sólo anda de esa forma. ¿Que hago? busco la solucion? ya no, la busque demasiadoy  no la encontré. Entonces buscaré la solución más elegante.

Lo solucioné, creando un acceso directo.

Seré extenso pero repetiré el problema.


Tu primera cita

Cita de: RayR en 25 Marzo 2020, 17:02 PM
No sé si aún te sirva, pero es bastante obvio que algo sí que es diferente en ambos casos, y es un error muy común cuando uno tiene poca experiencia. Siempre que uses cuadros de diálogo para abrir o guardar archivos, ten presente que te pueden cambiar el directorio actual (working directory).

Puedes ver que eso está ocurriendo en tu programa. Fíjate en tu video, en las ventanas de consola, desde dónde se están ejecutando los comandos del bat. Seguro alguno de esos comandos depende de la ruta, y por eso el error.


tendría argumento lógico y real si fallara luego de cargar una preset con cualquier tipo de archivo. O sea si yo guardo una preset, salgo de programa, lo inicio de nuevo, cargo una preset, le doy Play y falla con todos los archivos, claramente es lo que dices: un error en el directorio actual.

Pero no es el caso, ya que cualquier archivo que exista (excepto los bat) Funciona bien. Inicio el programa > Cargo la preset, le doy play al programa, y el programa o archivo se ejcuta sin problema y sigue la función de mi original de mi programa.


Pero no, sólo falla con los BAT (y no sé si todos, al menos los que uso).

Resumen del problema:

Si inicio el programa, seleccciono el bat, le doy play.. anda
Si inicio el programa, selecciono cualquier programa u archivo, le doy play... anda
Si Inicio el programa, guardo una preset del bat, Lo cierro, cargo la preset y le doy play, NO ANDA. Es decir, abre el CMD rápido y se cierra.
Si inicio el programa, guardo una preset con cualquier archivo, y le doy play, Anda...

Lo que hace mi programa cuando selecciona el archivo, es simplemente abrir el commonDialog, el FileName (ruta completa con archivo y extensión incluidos) queda guardado en la caja de text "txtpath" luego el boton preset guarda eso en una base de datos. Cuando se carga la preset desde otro boton, se trae la info desde la base de datos al casillero de origen. Fin, eso es el 50% del programa.

Al levantar es  recordset. el botón de "iniciar" manda el ShellExecute al TXTpath, y obviamente anda, con todo y todas las preset, menos el jodido bat... (sólo si es cargado desde un preset preset, pero cualquier otro archivo si anda cargando preset :/).


Brujería del Tío Bill.. para mi algun error interno desconcido entre el CMD y las API de ShellExecute, Shell, o el WinExec. Con ninguna de las 3 andubo,
tal vez al final del recordset en el levante de los datos a la base de datos al sistema tenga algo... O tal vez en el option explicit para abajo.. En fin, para mi absolutamente todo queda descartado por que anda con todo lo que existe en entorno windows, con o sin carga de presets, menos con los bat luego de ser levantados desde la base de datos.

En fin, cual es la solución? La única y comentada al principio del post, volver a seleccionar el archivo Bat, o el acceso directo a dicho bat, desde el boton que abre el common dialog. Solamente hacer eso, y darle play, ya anda, sino se cierra al toque la ventana del CMD


Cual es la solcucion elegante? Simplemente cuando guardo la preset, en secreto sin decirle al usuario le borro la carpeta system32 y todas sus fotos guardo en el path del programa un acceso directo a esa ***** que haya seleccionado al principio.

Cuando inicia el programa, pregunta si es un bat, si pone que no, ejecuta normalmente algo que no sea bat y obviamente anda. Si pone que si, abre de nuevo el commonDialog en la carpeta interna del programa, y hace doble click en el acceso directo, ya con eso sigue la funcion correcta de todo el sistema y anda perfectamente. Digamos unos 4 clicks de más.

No se me ocurrió otra cosa, probé demasiadas cosas y jamás quiso andar.


Cita de: **Aincrad** en 21 Marzo 2020, 14:04 PM


No has puesto el codigo del Start TODO.bat no podemos saber si es un error en el Script.


No sabemos que Informacion se guarda/carga el archivo de Precencia (k.aaa)

Incluso Podria ser el PhoenixMiner.exe que no se cierra a la Primera vez, tendrias q revisar. y si ese fuera el caso debes Matar el Proceso cuando terminas el minado.


Ni lei eso que me pedias el codigo del bat... a ver si era eso.

Por cierto si, es la función principal del programa y por eso se pide aparte (escrito manualmente x el user) el nombre del .exe. Cierra el .exe en un momento.

El bat tiene esto


setx GPU_FORCE_64BIT_PTR 0
setx GPU_MAX_HEAP_SIZE 100
setx GPU_USE_SYNC_OBJECTS 1
setx GPU_MAX_ALLOC_PERCENT 100
setx GPU_SINGLE_ALLOC_PERCENT 100
EthDcrMiner64.exe -epool us2.ethermine.org:4444 -ewal 0x8cce0e45e0fe85f3f70380825c23975b2235.MineraHanlRX570 -epsw x -mport 0 -showdiff 1 -showpower 1 -dbg -1 -rxboost 0