• Viernes 9 de Mayo de 2025, 22:25

Mostrar Mensajes

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


Mensajes - emuller

Páginas: [1] 2 3 ... 5
1
Visual FoxPro / Re: No funciona thisform.release
« en: Lunes 27 de Julio de 2009, 20:05 »
El problema es justamente que son modales, y cuando abres el segundo formulario se detiene la ejecución del primero (no sigue con el proceso del Release). Supongo que quizás funcione utilizando algún formulario oculto con un Timer, y que sea ese formulario el que se encargue de abrir a otros, es decir que tu "administrar_articulos" antes de cerrarse le avise al del Timer que tiene que abrir a "registrar_articulo".

Por ahora adjunto un archivo de prueba con lo más que pude lograr. En el "formulariomodal1" hay que prestar atención a la propiedad pabrir (creada por mí), al código del botón "abrir" y el código del método "unload".

2
Visual FoxPro / Re: diagramar una base de datos con DBF te cuesta?
« en: Domingo 19 de Julio de 2009, 02:41 »
Nunca viene mal una herramienta así. Habrá que probarla.

3
Visual FoxPro / Re: Problemas con propiedad value de combos
« en: Martes 14 de Julio de 2009, 15:26 »
Bien!!  :good:  Creo que para aprender es siempre mejor si uno mismo descubre lo que hizo mal y lo corrige.

 :beer:

4
Visual FoxPro / Re: Problemas con propiedad value de combos
« en: Lunes 13 de Julio de 2009, 15:34 »
Lo voy a mirar. ¿qué versión de fox estás utilizando?

Si podés, enviame una copia del formulario (son dos archivos) porque el txt es un poco engorroso de leer.

5
Visual FoxPro / Re: Problemas con propiedad value de combos
« en: Viernes 10 de Julio de 2009, 18:00 »
A ver si entiendo, así quizás luego te pueda ayudar.

¿Acaso tienes los combos con los diferentes valores ya cargados (un combo con todos los rubros, y así con los demás), y lo que quieres es que al buscar un producto, en cada combo se seleccione la opción que le corresponde a ese producto?

Si es así. ¿cómo cargas los datos en los combo (usas valores predefinidos, o les asignás cursores)?

6
Java / Re: Diccionario de acronimos
« en: Martes 23 de Junio de 2009, 01:45 »

7
Java / Re: Ejecutar una aplicacion desde código java
« en: Domingo 10 de Mayo de 2009, 03:42 »
Por lo que veo parece que estás trabajando en GNU/Linux o en algún sistema operativo similar (por lo del /home en el r.exec).

Forma más complicada: lee el contenido del archivo a un string y utiliza ese string como parámetro de r.exec. Lo bueno es que te va a funcionar en cualquier sistema operativo.

Forma más fácil: en vez de que el archivo sea lanzador.drv haz que sea un script shell. Por ejemplo que sea un lanzador.sh (en Windows debería ser lanzador.bat) y dale permiso de ejecución si está en un entorno tipo UNIX (GNU/LInux, etc). Tiene la desventaja de no ser muy portable (entre diferentes sistemas operativos).

8
Visual FoxPro / Re: numeros aleatorios en visual fox pro 9
« en: Jueves 7 de Mayo de 2009, 00:31 »
Hola y bienvenido  :beer:

Tenés que usar la función RAND([semilla]).
Esta función retorna un valor entre 0 y 1 y utiliza el valor de semilla para generar los valores pseudoaleatorios, por lo que simpre retornará la misma secuencia de valores si usas la misma semilla (según la ayuda, si no colocas ninguna semilla fox utiliza 100,001 como semilla por defecto).
Para que genere siempre una secuencia diferente (y se parezca a una "verdadera" función aleatoria) debes utilizar una semilla generada a partir del valor de reloj de la pc (q es lo que hace el randomize en otros lenguajes). En visual fox pro 9 ésto se logra utilizando una semilla negativa y se recomienda (pasa en todos los lenguajes) que sólo la utilices la primera vez que llamas a RAND y luego no utilices ninguna. O sea que la primera vez llamas a RAND con, por ejemplo, RAND(-1) y las siguientes veces solo utiliza RAND().

Para generar números aleatorios entre 1 y 10 me robé el siguiente ejemplo de la ayuda del visual fox pro 9 :rolleyes: :

Código: Text
  1. gnLower = 1 && Valor minimo
  2. gnUpper = 10 && Valor maximo
  3.  
  4. valor =  INT((gnUpper - gnLower + 1) * RAND( ) + gnLower)
  5.  

Este código devuelve solo valores enteros; si quieres, por ejemplo, que pueda salir 1.3 debes sacar la función INT.
Ten cuidado en que si por casualidad RAND da 1 el valor obtenido será 11: (10 - 1 + 1)*1 + 1. Debes controlar esa posibilidad.

9
Hardware / Re: Memoria USB Kingston "se volvió" de solo lectura
« en: Jueves 2 de Abril de 2009, 15:01 »
¿Puedes darle formato ("formatear")? (salva las cosas que tengas ahí antes, por supuesto  :) )

10
Hola. Buscando un rato (por lo que no sé que tan buenos son estos programas porque no los conozco) encontré:

http://cdinterface.sourceforge.net/ - Es libre (licencia GPL)
http://www.wentnet.uklinux.net/software/cdstarter.php3 - gratuito
http://freeware.pvland.cz/freeware.htm#app2 - gratuito

11
Dudas informáticas / Re: pdf y word
« en: Jueves 12 de Marzo de 2009, 17:45 »
Este es un convertidor online y parece funcionar bastante bien, aunque parece tener algunos problemas con los espacios en los títulos: http://www.pdftoword.com/. Es gratuito.

AGREGADO: Acabo de descubrir que no soporta archivo pdf de más de 10 MB.

12
C/C++ / Re: Clases que llaman a otras clases
« en: Miércoles 11 de Marzo de 2009, 22:56 »
Cita de: "m0skit0"
... yo siempre defiendo el HTM (Hazlo Tú Mismo), creo que se aprende más y además se tiene más control sobre qué se está haciendo realmente...  

Estoy de acuerdo. Para aprender las bases del lenguaje prefiero hacerlo yo mismo.  :comp:

13
C/C++ / Re: Clases que llaman a otras clases
« en: Miércoles 11 de Marzo de 2009, 15:42 »
Cita de: "m0skit0"
Cita de: "emuller"
La clase server debe tener un atributo de tipo Vector, y dentro de ese vector almacenas, por ejemplo, punteros a objetos LD (recuerda hacer delete al puntero de un objeto LD si vas a borrarlo del Vector, ya que aunque borres el puntero el objeto sigue existiendo y ocupa memoria).
Efectivamente, pero te olvidas de que de esta forma también defines un máximo de elementos de forma estática que no puedes modificar a menos que recompiles el programa. Y también que tu método es más rápido que el mío, pero presenta el inconveniente anteriormente mencionado. ¡No se puede tener todo, amigos!  B)

No se si se entendió bien lo que dije, con vector me refería a la clase "vector" de la STL al que parece, según la documentación en  el enlace que coloqué, se lo puede redimensionar. De todas formas sólo lo usé un par de veces de manera muy simple y hace bastante tiempo ya, así que es muy probable que me haya equivocado en la idea.

Gracias por la acotación, siempre se aprende algo nuevo !!  :)

14
C/C++ / Re: Clases que llaman a otras clases
« en: Martes 10 de Marzo de 2009, 22:12 »
Hola. No recuerdo mucho de C++ pero ahí va:

Además de la solución de m0skit0, también puedes utilizar los vectores de la STL (http://www.cppreference.com/wiki/stl/vector/start) para la lista dinámica de clases LD. La clase server debe tener un atributo de tipo Vector, y dentro de ese vector almacenas, por ejemplo, punteros a objetos LD (recuerda hacer delete al puntero de un objeto LD si vas a borrarlo del Vector, ya que aunque borres el puntero el objeto sigue existiendo y ocupa memoria).

Además, para que tu programa principal pueda acceder a los objetos LD la clase server debe proveerle de algún mecanismo para que pueda acederlos. Hay varias formas, suponiendo que usas un vector:
1) Puedes hacer que el atributo de tipo Vector sea público. En la POO esto no se considera una buena forma de hacerlo.
2) Hacer que el Vector sea privado y colocar un método en la clase server que retorne un puntero a ese vector.
3) Hacer que el Vector sea privado y colocar métodos en la clase server que te permitan obtener los punteros a los objetos LD.
4) y varias más

Espero no haber dicho pavadas y te sirva.

15
Java / Re: RACE CONDITION
« en: Lunes 2 de Marzo de 2009, 15:49 »
Hola. Puede que esto te sirva:
http://www.reloco.com.ar/prog/java/threads.html
En la sección "sincronización" muestra un ejemplo de una posible condición de carrera (race condition)

16
Visual FoxPro / Re: Envíar un reporte de VFP a un archivo PDF
« en: Miércoles 5 de Noviembre de 2008, 03:00 »
:)

17
Visual FoxPro / Re: Envíar un reporte de VFP a un archivo PDF
« en: Lunes 3 de Noviembre de 2008, 23:54 »
La verdad es que no te puedo decir (o no he entendido tu pregunta). La única forma en la que he probado es con la impresora virtual (la segunda opción que nombré), donde la opción PROMPT es la que hace que aparezca el diálogo de selección de impresora. Si quitas PROMPT no te mostrará ese diálogo, o sea que según mi ejemplo quedaría algo así (no me acuerodo si se debe colocar algo más):

Código: Text
  1. REPORT FORM mireporte NOCONSOLE TO PRINTER
  2.  

Si utilizaste lo que está en los enlaces no te puedo decir nada porque nunca lo probé     :unsure: .

18
Visual FoxPro / Re: Envíar un reporte de VFP a un archivo PDF
« en: Domingo 2 de Noviembre de 2008, 02:06 »
Verdaderamente nunca lo he intentado, pero en vez de esperar a que alguien con más conocimientos te dé información exacta quizás puedas comenzar a probar algo a partir de estos enlaces y la ayuda del VisualFoxPro:

http://pdfclasses.googlepages.com/

La otra opción es instalar un programa como pdfcreator (http://www.pdfforge.org/) ó pdf995 (http://www.pdf995.com/) los cuales te instalan una impresora virtual que te crea un archivo pdf (en vez de imprimir en una impresora normal), y elegir la impresora virtual al momento de imprimir el reporte. Para que te permita elegir la impresora al momento de imprimir el reporte puedes hacer:
Código: Text
  1. REPORT FORM mireporte NOCONSOLE TO PRINTER PROMPT
  2.  

Suerte!!

19
C/C++ / Re: Como obtengo esta info en C++
« en: Jueves 4 de Septiembre de 2008, 01:08 »
Hola.   :hola:

Par lo primero: Supongo que necesitas alguna librería orientada al manejo de audio (o hacerlo desde cero mediante la lectura del dispositivo que corresponde al micrófono). La verdad nunca he hecho nada de eso pero quizás esta librería http://www.portaudio.com/ te sirva (creo que el editor de audio Audacity la utiliza). También puedes probar con la SDL (http://www.libsdl.org/) que es mucho más sencilla (pero menos poderosa) que PortAudio.
En todo caso, seguro que algún otro miembro del foro te dará más ideas.

20
C/C++ / Re: Audio
« en: Martes 29 de Julio de 2008, 17:28 »
No estoy muy seguro de que te sirva (no la he probado) pero fijate en http://www.portaudio.com/

21
Java / Re: Extrano Comportamiento De Mi Ide
« en: Sábado 31 de Mayo de 2008, 00:31 »
Con CTRL+C O CTRL+Z se corta la entrada de la consola y la lectura devuelve null. En la documentación de la API (yo estoy usando el JDK 1.6u5), si buscás la clase Console dice que los métodos de lectura de esa clase retornan null si hacés CTRL+Z. Luego probé si pasaba lo mismo si leías la entrada con el BufferedReader y haciendo CTRL+Z y funcionó. Luego probé con CTRL+C y también funcionó. Por eso lo del br.readLine == null.

¿Era esa tu duda?

22
Java / Re: Extrano Comportamiento De Mi Ide
« en: Viernes 30 de Mayo de 2008, 00:49 »
Código: Text
  1. import java.io.*;
  2. public class BackUpCopyMaker {
  3.  
  4.  public static void main(String [] args) {
  5.    try {
  6.      FileWriter fw = new FileWriter("priprema.txt");
  7.      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  8.      StringBuffer sb = new StringBuffer("");
  9.      String linea = new String("");
  10.  
  11.      System.out.println("Ingrese texto. Para salir \"exit, ctrl+z, ctrl+c\": ");
  12.  
  13.      while(((linea = br.readLine())!=null) && (!linea.equals("exit"))){
  14.        sb.append(linea + "\r\n");
  15.      }
  16.  
  17.      fw.write(sb.toString());
  18.      fw.close();
  19.  
  20.    } catch(IOException e) {
  21.      System.err.println(e.getMessage());
  22.    }
  23.  }
  24. }
  25.  

Con este código, el programa sale con CTRL+C, o CTRL+Z y luego ENTER (creo que en sistemas tipo UNIX es con CTRL+D), o escribiendo "exit".

23
Java / Re: Extrano Comportamiento De Mi Ide
« en: Jueves 29 de Mayo de 2008, 03:30 »
Lo probé y pude solucionarlo. Creo que el problema es que en el do ... while hacés dos veces readLine, una para agregar al StringBuffer (sb) y otra en la condición del while.
Lo solucioné llamando una sola vez a readLine y guardando lo que retorna en un String temporal. Me quedó así:
Código: Text
  1. import java.io.*;
  2. public class BackUpCopyMaker {
  3.  
  4.   public static void main(String [] args) {
  5.     try {
  6.       FileWriter fw = new FileWriter("priprema.txt");
  7.       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  8.       StringBuffer sb = new StringBuffer("");
  9.       String linea = new String("");
  10.  
  11.       System.out.println("Enter Text: ");
  12.  
  13.       do {
  14.         linea = br.readLine();
  15.         sb.append(linea + "\r\n");
  16.       } while(!linea.equals("exit"));
  17.      
  18.       fw.write(sb.toString());
  19.       fw.close();
  20.  
  21.     } catch(IOException e) {
  22.       System.err.println(e.getMessage());
  23.     }
  24.   }
  25. }
  26.  
Con este código, el "exit" también se guarda en el archivo. Si no querés que lo haga debes cambiar el do ... while de esta forma:
Código: Text
  1. do {
  2.   linea = br.readLine();
  3.   if(!linea.equals("exit"))
  4.     sb.append(linea + "\r\n");
  5. } while(!linea.equals("exit"));
  6.  

24
Visual FoxPro / Re: Crear Txt
« en: Miércoles 28 de Mayo de 2008, 03:55 »
Primero, para crear un archivo puedes utilizar FCREATE:

   FCREATE(nombreDeArchivo [, nAtributoDeArchivo])

En nombreDeArchivo puedes colocar la ruta completa o la relativa al path que tengas establecido en el entorno. Si el archivo existe lo sobreescribe sin ningún tipo de warning. Devuelve el número para su manejo (handler) si no hubo ningún error. Si hubo algún error devuelve -1

Si no queres reemplazarlo, sino que queres agregar a uno creado anteriormente deberias utilizar la función FILE(nombreDeArchivo [,flag]) que devuelve .T. si el archivo existe o .F. en caso contrario. Si no existe lo creas con FCREATE y si existe lo abres con FOPEN:

   FOPEN(nombreDeArchivo [, nAtributoDeArchivo])

También devuelve el handler o -1 en caso de error

Recuerda guardar el número manejo (handler) en una variable para poder utilizar el archivo abierto on otras funciones.

Para escribir en el archivo utiliza FWRITE, FPUTS y FSEEK

Consulta la ayuda del fox para obtener una info detallada de estas funciones.

Por ejemplo, para abrir el archivo "texto.txt" y escribir la cadena "cadena de texto" al final del archivo sería algo así (al archivo lo abre para lectura y escritura y sin uso de buffer):

Código: Text
  1. LOCAL varHandler
  2. IF FILE("texto.txt") THEN
  3.     varHandler = FOPEN("texto.txt",12)
  4. ELSE
  5.     varHandler = FCREATE("texto.txt")
  6. ENDIF
  7.  
  8. IF varHandler != -1 THEN
  9.     FSEEK(varHandler,0,2)
  10.     FPUTS(varHandler,"cadena de texto")
  11.     FCLOSE(varHandler)
  12. ELSE
  13.     && algún mensaje de error
  14. ENDIF
  15.  

25
Java / Re: Acciones Con El Boton Derecho Del Raton
« en: Miércoles 28 de Mayo de 2008, 03:28 »
Busca sobre el uso de la clase PopupMenu (con AWT) o JPopupMenu (con Swing) para lograr aparecer un menú cuando hagas clic derecho con el ratón.

Páginas: [1] 2 3 ... 5