|
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 - logicaemp
1
« en: Jueves 13 de Enero de 2011, 05:42 »
Hola, Posiblemente, public static void leerFichero (String nombreFichero ) { Counter counter = new Counter(); try { while (true) { int DNI = ois.readInt(); counter.count(DNI); .... } finally { counter.show(); } } private static class Counter { private HashMap <Integer, Integer > dnis = new HashMap <Integer, Integer >(); if (dnis.containsKey(DNI)) value = dnis.get(DNI) + 1; dnis.put(DNI, value); } public void show() { for (Map. Entry<Integer, Integer > i : dnis. entrySet()) } }
Saludos,
2
« en: Jueves 13 de Enero de 2011, 04:11 »
AlbertoBMPI :
Técnicamente es lenguaje Visual Basic así que se puede adaptar fácilmente a cualquier producto que use Visual Basic script eso significa Microsoft Word Excel PowerPoint Access e inclusive programas como CorelDRAW Crystal Reports etc aunque no sea útil en algunos de los mencionados. El punto es saber como integrarlo normalmente la tecla F11 abre el editor de Macros de Visual Basic script en Access pero tendrías que investigar o estudiar un poco más para usarlo en los formularios. Tengo varios amigos usándolo en Excel.
ps:
Parece que a ricardoborisflores se le ha olvidado enviar el suyo.
3
« en: Miércoles 15 de Julio de 2009, 06:48 »
Aplicación:
Este código convierte números a letras/texto. Ejemplo: 1240 --> "UN MIL DOSCIENTOS CUARENTA"
Incluye proyecto formulario y módulo (class): * Visual Basic 6.0 * Visual Basic .NET (2001 rtm 1.0) * Visual Basic 2008 (rtm 3.5) * Visual C# .NET (2001 rtm 1.0) * Visual C# 2008 (rtm 3.5) Descripción:
Es un proyecto de programación para convertir o generar el texto (String) que representa el número que se desea convertir. Está diseñado de una forma sencilla para enseñar a principiantes e intermedios algunas técnicas de programación y no está optimizado. Al mismo tiempo lo he utilizado en varias aplicaciones comerciales personales en C usando el mismo algoritmo optimizado.
Tiene la opción de convertir los números en letras usando un formato normal y otro corto; este último se puede deshabilitar por medio de un parámetro en la rutina de conversión. Ese formato no es utilizado y no está regido a ninguna regla de dicción o diccionario. Se puede utilizar para ejemplificar otros lenguajes como el inglés.
NO es una aplicación compilada que se pueda descargar instalar y usar. Es código fuente para programadores.
Autor: Gerardo
5
« en: Miércoles 27 de Febrero de 2008, 05:48 »
flush() por ejemplo: public static void print(Socket socket, String s) { try { PrintStream out = new PrintStream(socket.getOutputStream()); out.print(s); out.flush(); } catch (IOException e) {} }
7
« en: Martes 8 de Enero de 2008, 03:35 »
El sistema de numeración Romano no es un sistema posicional como el Arábigo. Como un glifo solo puede tener un valor sin importar su posición, podemos buscar y reemplazar. Por ejemplo M siempre vale 1000. Al contrario del sistema arábigo donde 1 depende de la cantidad de 0's. Lo único que hay que tener en cuenta es que un valor superior como "M" no puede aparecer despúes de "X". import java.text.ParseException; public class FromRoman { public static final Integer[] divs = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; public static final String[] figs = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; public static void main(String[] args) throws ParseException { String letter = args[0]; Integer number = 0; int i = 0; int j = 0; while (i < letter.length()) { if (i < letter.length() - 1) { String twoletter = letter.substring(i, i + 2); int twoindex = indexOf(j, twoletter); if (twoindex != -1) { number += divs[twoindex]; i = i + 2; j = twoindex; continue; } } String oneletter = letter.substring(i, i + 1); int oneindex = indexOf(j, oneletter); if (oneindex != -1) { number += divs[oneindex]; i++; j = oneindex; continue; } throw new ParseException(letter, i); } System.out.println(number); } public static int indexOf(int startIndex, String temp) { for (int j = startIndex; j < figs.length; j++) { if (temp.equals(figs[j])) { return j; } } return -1; } }
logicaemp@sparc4:~$ java FromRoman MCMLXXXVII 1987 logicaemp@sparc4:~$ java FromRoman MCMXLXXXVII 1977 logicaemp@sparc4:~$ java FromRoman CCC 300 logicaemp@sparc4:~$ java FromRoman MXXXXIXXI Exception in thread "main" java.text.ParseException: MXXXXIXXI at FromRoman.main(FromRoman.java:36) logicaemp@sparc4:~$ java FromRoman MXXXXIXI 1050
Todavía hay que corregir la cantidad de "figs" que puede contener un valor. Así como el ejemplo anterior donde IX (9) y después un I (1), evidentemente debería ser un error. Espero que sea de ayuda.
9
« en: Domingo 2 de Diciembre de 2007, 21:47 »
Mi objetivo es solamente darte una base donde puedas iniciar tu propio proyecto, no que utilices mi código directamente, te doy un ejemplo más sencillo, para que tengas una idea más básica, y continúes con la parte que hace falta: public class romboloop { public static void main(String[] args) { int n = Integer.parseInt(args[0]); int m = n / 2; int x, y; // ESTE CICLO ES PARA IR CONTANDO // VERTICALMENTE for (x = 1; x <= m + 1; x++) { // ESTE CICLO IMPRIME LOS ESPACIOS INICIALES // QUE VAN ANTES DE LOS ASTERISCOS (VER: A) for (y = 1; y <= (m - x) + 1; y++) { System.out.print("_"); } // ESTE CICLO IMPRIME LA MITAD DE LOS ASTERISCOS // QUE FORMAN EL ROMBO (VER: B) for (y = 1; y <= x; y++) { System.out.print("*"); } // ESTE CICLO IMPRIME LA MITAD DE LOS ASTERISCOS // QUE FORMAN EL ROMBO TAMBIEN, PERO LA 2 PARTE (VER: C) for (y = 1; y < x; y++) { System.out.print("*"); } // ESTE CICLO IMPRIME LOS ESPACIOS FINALES // QUE VAN DESPUES DE LOS ASTERISCOS (VER: D) for (y = 1; y <= (m - x) + 1; y++) { System.out.print("_"); } // ESTA INSTRUCCION IMPRIME EL NUMERO DE LINEA // Y SALTA DE LINEA System.out.println(" " + x); } } } /* CICLOS FOR A B C D |----|--|--|-----| ________*________ 1 _______***_______ 2 ______*****______ 3 _____*******_____ 4 ____*********____ 5 ___***********___ 6 __*************__ 7 _***************_ 8 ***************** 9 */
public class romboloop { public static void main(String[] args) { int n = Integer.parseInt(args[0]); int m = n / 2; int x, y; for (x = 1; x <= m + 1; x++) { for (y = 1; y <= (m - x) + 1; y++) { System.out.print(" "); } for (y = 1; y <= x; y++) { System.out.print("*"); } for (y = 1; y < x; y++) { System.out.print("*"); } for (y = 1; y <= (m - x) + 1; y++) { System.out.print(" "); } System.out.println(" " + x); } } }
templates@devservapp:~$ java romboloop 17 * 1 *** 2 ***** 3 ******* 4 ********* 5 *********** 6 ************* 7 *************** 8 ***************** 9
Saludos,
10
« en: Domingo 2 de Diciembre de 2007, 07:26 »
Hay muchas formas de hacerlo, con varios ciclos, yo prefiero los cálculos matemáticos, aquí hay un ejemplo de como puedes realizarlo: //OBTENGO EL NUMERO DESDE LOS ARGUMENTOS int n = Integer.parseInt(args[0]); .... //LO DIVIDO ENTRE DOS PARA TENER POSITIVOS Y NEGATIVOS int m = n / 2; ...... //EN ESTE CICLO VA DE -m HASTA +m for (int y = -m; y <= m; y++) { ..... //EN ESTE CICLO VA DE -m HASTA +m OTRA VEZ PARA FORMAR EL ROMBO for (int x = -m + fix; x <= m; x++) { .....
No se me ocurre ni por donde empezar a explicar este programa, si tienes alguna duda, pregunta en este mismo hilo de conversación, para discernir el funcionamiento. La idea es, si es un rombo de 7 x 7, los ciclos no van de 1..7, 1..7... sino que van de -2 hasta +3 y -2 hasta +3. De esta forma puedes crear un rombo. public class rombo { public static void main(String[] args) { int n = Integer.parseInt(args[0]); int m = n / 2; int fix = n % 2 > 0.0 ? 0 : 1; for (int y = -m + fix; y <= m; y++) { int z = y * ((m + 1) - Math.abs(y)); for (int x = -m + fix; x <= m; x++) { if (Math.abs(y * x) < Math.abs(z) || y == 0) { System.out.print("*"); } else { System.out.print(" "); } } System.out.print(String.format("%1$4d", (y % 10))); System.out.println(); } } }
templates@devservapp:~$ java rombo 17 * -8 *** -7 ***** -6 ******* -5 ********* -4 *********** -3 ************* -2 *************** -1 ***************** 0 *************** 1 ************* 2 *********** 3 ********* 4 ******* 5 ***** 6 *** 7 * 8
También te aconsejo que tengas a mano un libro de álgebra. También te aclaro que está es la forma más COMPLICADA de hacerlo. Pero también la más eficiente y es la mejor forma de programar. Saludos,
11
« en: Sábado 1 de Diciembre de 2007, 05:41 »
http://napkinlaf.sourceforge.net/http://wiki.java.net/bin/view/Projects/NapkinLAFDesde el código solo necesitas escribir esto al principio del programa: try { javax.swing.UIManager.setLookAndFeel("net.sourceforge.napkinlaf.NapkinLookAndFeel"); } catch (Exception e) { System.out.println(e); }
Tienes que copiar los archivos .jar en el mismo directorio de la aplicación, y tienes que ejecutar la aplicación con el "class path" adecuado: Linux: #!/bin/bash cd /home/MyName/MyApp export CLASSPATH=.:napkinlaf.jar:napkinlaf-swingset2.jar java -cp $CLASSPATH MyApp Windows: @echo off cd C:\Documents and Settings\MyName\MyApp set CLASSPATH=.;napkinlaf.jar;napkinlaf-swingset2.jar java -cp %CLASSPATH% MyApp En los dos casos, se cambia al directorio donde esta el programa *.class o *.jar, se define la variable CLASSPATH para estar seguros y se ejecuta la aplicación con java. Si muestra un error es por que no pudo encontrar algo ...
12
« en: Sábado 1 de Diciembre de 2007, 04:55 »
NetBeans crea este código en el constructor de el JFrame: public MyFrame() { initComponents(); }
para pasarle parametros al constructor solo tienes que copiar el constructor que crea NetBeans por defecto, a uno nuevo: ---------- MyFrame.java ---------- // extends javax.swing.JFrame Habitacion temp; public MyFrame(Habitacion temp) { initComponents(); setLocationRelativeTo(null); this.temp = temp; this.temp.x = 25; }
de esta forma ya puedes usar el objecto "habitacion" dentro de MyFrame donde sea, y todos los cambios en las propiedades de ese objecto se van a ver reflejadas en el principal, por ejemplo, para llamar el JFrame: ---------- MyMainFrame.java ---------- // extends javax.swing.JFrame habitacion temp; public MyMainFrame() { temp = new habitacion(); } public button_actionlistener(...evt) { temp.x = 10; new MyFrame(temp).show(); // crea el objeto, lo muestra y cambia a 25 // aquí el programa sigue corriendo sin detenerse. *********** System.out.println(temp.x); // 25 }
el problema es que el programa seguiría ejecutándose, y solo en el constructor podrías cambiar los valores. Para que pueda mostrar una ventana y el programa se dentenga y -- se "bloquee"--, debes usar una ventana "modal" JDialog en lugar de JFrame. Puedes probar este ejemplo de JDialog. ---------- example.java ---------- public class example { public final static long serialVersionUID = 40974097; public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { habitacion temp = new habitacion(0); System.out.println("VALOR DE HABITACION ANTES : " + temp.x); // *** 0 *** new dialog(null, true, temp).setVisible(true); System.out.println("VALOR DE HABITACION AHORA : " + temp.x); // *** 25 *** } }); } } ---------- dialog.java ---------- public class dialog extends javax.swing.JDialog { public final static long serialVersionUID = 40964096; private habitacion temp; public dialog(java.awt.Frame parent, boolean modal, habitacion temp) { super(parent, modal); setLocationRelativeTo(parent); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("DIALOG DE EJEMPLO"); javax.swing.JButton jButton1 = new javax.swing.JButton("<html><h1>PRESIONE PARA SALIR</h1></html>"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); add(jButton1); pack(); this.temp = temp; } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { this.temp.x = 25; this.dispose(); } } ---------- habitacion.java ---------- public class habitacion { // esta es una clase donde se guardan los datos public int x; public habitacion(int x) { this.x = x; } }
13
« en: Domingo 25 de Noviembre de 2007, 01:44 »
En mi opinión personal, creo que ninguno de los que mencionas, manejar un socket y hacer un "parser" de html que extraiga links, obtenga los siguientes URLs, etc, sería una operación muy compleja en Java, C++, etc. Para este tipo de aplicaciones te sugiero un lenguaje script, como Perl, Python, Tcl, etc. En menos tiempo desarrollas este tipo de aplicaciones con estos lenguajes. Y puedes hacer interfaces gráficas muy fácilmente. Inclusive Perl en casi todas las distribuciones, trae un ejemplo llamado lwp-rget. Con 144 lineas de código (eliminando textos de forma de uso) es un programa que descarga (recursivamente) todas las páginas de un sitio, configurando opciones, el script busca todos los links de las páginas y baja todos los recursos para ver todas las páginas del sitio off-line. -- Muy util para bajar imágenes  -- Con pocas modificaciones y eliminando el almacenamiento en disco que hace ese script, podrías hacer un crawler eficiente. (Supe de alguien que lo modificó para buscar solo direcciones de e-mails, le tomó menos de 20 minutos hacerle los cambios y agregarle almacenamiento en MySQL). Saludos,
14
« en: Viernes 23 de Noviembre de 2007, 20:50 »
Me parece un funcionamiento parecido a un "Wizard", o Asistente que te lleva por diferentes pantallas, y puedes volver a la anterior en el caso cambies de opinión. Si ese fuera el caso, podrías utilizar solamente un Formulario, y usar el CardLayout con varios Paneles (Con los botones y los textos).
Si fuera un funcionamiento parecido a una pantalla de configuración o selección de opciones, donde cambias opciones y puedes navegar entre ellas, y saltar desde el primer formulario al ultimo, o viceversa, podrías usar un JTabbedPane.
Si tienen que ser Formularios JForms (independientes), entonces no hay otra opción mas crear los formularios, y ocultarlos / hacerlos visibles, dependiendo del estado de la aplicación.
Saludos,
15
« en: Viernes 23 de Noviembre de 2007, 08:25 »
Crea la etiqueta con html incluido. Y responde al evento ejecutando una aplicación. jLabel1 = new javax.swing.JLabel(); jLabel1.setText("<html><font color=blue><u>Hotmail</u></font></html>"); jLabel1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel1MouseClicked(evt); } }); private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) { try { java.lang.Runtime.getRuntime().exec("epiphany http://www.hotmail.com/"); // java.lang.Runtime.getRuntime().exec("firefox http://www.hotmail.com/"); // java.lang.Runtime.getRuntime().exec("iexplore http://www.hotmail.com/"); // SOLO WINDOWS : Abre el explorador pre-determinado : // java.lang.Runtime.getRuntime().exec("start http://www.hotmail.com/"); } catch (IOException ex) { System.out.println(ex.getMessage()); } }
16
« en: Viernes 23 de Noviembre de 2007, 07:47 »
Normalmente la aplicación no está en "\" Tendrías 2 opciones: <APPLET CODE="proy_applet.class" CODEBASE="WEB-INF\classes" <-- Eliminar \ antes de WEB-INF\ WIDTH = 200 HEIGHT=200></APPLET> <APPLET CODE="proy_applet.class" CODEBASE="\myproxy\WEB-INF\classes" <-- Poner la ruta completa \myprox\... WIDTH = 200 HEIGHT=200></APPLET> -- desde el sitio. http://localhost:8084/myproxy/...
CODE: La clase principal a ejecutar. CODEBASE: El directorio desde donde se van a leer las clases (relativo a donde está el JSP). Las clases solo pueden estar en un directorio abajo de donde está el JSP. No pueden estar afuera del sitio, ni en un directorio superior. ------------------ Para usar el .jar hay que seguir ciertas reglas: 1. La clase principal tiene que estar dentro un package, que no sea el <default package> 2. Usar ARCHIVE="proy_graph.jar" dentro del tag <APPLET 3. El CODE="com.mypro.proy_applet", donde se coloca el package completo y se puede eliminar el .class
17
« en: Jueves 22 de Noviembre de 2007, 07:05 »
//Se supone que aqui deberia agragarse los botones a la ventana. miFrame.getContentPane().setLayout(new java.awt.FlowLayout()); miFrame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);miFrame.getContentPane().add(miPanel); miFrame.getContentPane().add(miPanel2); miFrame.getContentPane().add(miPanel3); miFrame.getContentPane().add(miPanel4); //Y aqui visualizar la ventana con los 4 botones. miFrame.pack();miFrame.setVisible(true); El JFrame por defecto usa el BorderLayout. First, center, last, etc. Sin el layout se traduciria en : miFrame.getContentPane().add(miPanel, java.awt.BorderLayout.CENTER); miFrame.getContentPane().add(miPanel2, java.awt.BorderLayout.CENTER); miFrame.getContentPane().add(miPanel3, java.awt.BorderLayout.CENTER); miFrame.getContentPane().add(miPanel4, java.awt.BorderLayout.CENTER);
Y se reemplazaría el anterior con el siguiente. miPanel4 reemplazaría a miPanel3 en el CENTER. miPanel3 reemplazaría a miPanel2 en el CENTER. etc...
18
« en: Domingo 18 de Noviembre de 2007, 05:04 »
Xorg... y por que no Xfree86?
X11 si es "compatible" con MSWindows ( ver Cygwin ) y un dolor de cabeza.
Librerias "multiplataform"?
Esta Tk, Qt, Gtk, Fltk... Xfree86 fué reemplazado casi totalmente por X.org. Un cambio de licencia producido en Febrero de 2004 a partir de la versión 4.4.0 (anteriormente se distribuía bajo la licencia MIT) provocó la creación de la bifurcación X.Org, apoyada por empresas y desarrolladores descontentos con presuntas incompatibilidades con la popular licencia GPL. Esto ha provocado una caída en la popularidad de XFree86, siendo reemplazado por X.Org en practicamente todas las distribuciones de GNU/Linux y en algunos sistemas BSD.
http://es.wikipedia.org/wiki/XFree86X11 no es compatible con MSWindows Cygwin no es compatible de la forma como es Wine (emulador). Cygwin es un compilador + librerias, no un emulador. Cygwin is not a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows. http://www.cygwin.com/Wine ... es una reimplementación de la API de Win16 y Win32 para sistemas operativos basados en Unix bajo plataformas Intel. Permite la ejecución de programas para MS-DOS, Windows 3.11, Windows 95, Windows 98, Windows ME, Windows NT, Windows 2000 y Windows XP. ... http://es.wikipedia.org/wiki/WineLibrerias Multiplataforma... incontables ! Documentadas? ... unas cuantas ! Realmente bien implementadas ? GTK++  Saludos,
19
« en: Sábado 17 de Noviembre de 2007, 22:44 »
Tienes que hacer los 4 cambios indicados en el siguiente código:import javax.swing.*; public class recorrido { public static void main (String [] args) { int i,j,k,n,m,s; int a[][] = new int [10][10]; int v[] = new int [100]; String st; n=Integer.parseInt(JOptionPane.showInputDialog("n° filas")); m=Integer.parseInt(JOptionPane.showInputDialog("n° columnas")); for (i=1;i<=n;i++){ for(j=1;j<=m;j++){ a[i][j]=Integer.parseInt(JOptionPane.showInputDialog("a[ "+i+j+ " ]=")); } } if(n % 2==0){ k=0; for(i=n;i<=1;i--){ // ********** "<=" cambiar ">=" if(i % 2==0){ for(j=m;j<=1;j--){ // ********** "<=" cambiar ">=" k++; v[k]=a[i][j]; } }else{ for (j=1;j<=m;j++){ k++; v[k]=a[i][j]; } } } }else{ k=0; for(i=n;i<=1;i--){ // ********** "<=" cambiar ">=" if(i % 2!=0){ for(j=m;j<=1;j--){ // ********** "<=" cambiar ">=" k++; v[k]=a[i][j]; } }else{ for(j=1;j<=m;j++){ k++; v[k]=a[i][j]; } } } } st=" "; for (s=1;s<=k;s++){ st= st + v[s] + " "; } JOptionPane.showMessageDialog(null, st ); } }
Saludos,
20
« en: Sábado 17 de Noviembre de 2007, 20:57 »
X11 incluye su propio sistema de dibujar en la pantalla y crear ventanas. Realmente no necesitas ninguna librería extra mas que el sistema X.org que viene en todos los Linux, la versión completa con código fuente. Pero entre mas baja es la capa del SO, mas alto es el nivel de programación. (X es la capa gráfica mas baja). La ventaja es que tu aplicacion no necesita más que el sistema X.org instalado, pero la desventaja es que no hay información sobre las librerías, no hay una API de programación (yo nunca la he visto, pero talves puedas encontrar alguna), así que tienes que bajar el código fuente de X e interpretarlo; o ver algunos ejemplos. X.org no es compatible con Microsoft Windows (los programas de Linux no corren sobre Windows), puedes ejecutar "algunas" aplicaciones de Windows sobre Linux con la herramienta Wine. GTK+ es compatible con X.org y Microsoft Windows. Pero debes de instalarla como una aplicación extra. (Como el Runtime de Java o el Framework de .NET, las aplicaciones .NET corren sobre Linux con la aplicación "mono", que debe de ser instalado por aparte). Programar en assember, creo que no es necesario, con C es suficiente. Para ver un ejemplo de una aplicación hecha completamente en X, sin ninguna libreria. Puedes verla en xorg.freedesktop.org/releases/X11R7.3/src/app/xcalc-1.0.2.tar.gz Una poderosa calculadora  hecha completamente en C y usando solamente X. Necesitas estos encabezados, que vienen en el código fuente de X. En ubuntu o Debian usa el package x-org y x-org-dev. (con apt-get). #include <X11/Intrinsic.h> #include <X11/StringDefs.h> #include <X11/Xatom.h> #include <X11/Shell.h> #include <X11/Xaw/Cardinals.h> #include <X11/Xaw/Form.h> #include <X11/Xaw/Label.h> #include <X11/Xaw/Command.h> #include <X11/Xaw/Toggle.h> #include <X11/cursorfont.h>
Para configurarla y ejecutarla corre el siguiente código... Si no puedes ejecutar el ejemplo, no creo que tengas la habilidad para poder desarrollar una aplicación basada completamente en X; y te aconsejo que utilices xlib, XWidgets o GTK+. Saludos
21
« en: Sábado 17 de Noviembre de 2007, 01:36 »
Necesitas un "parser" para funciones. Puedes bajar uno gratis en : www.codeproject.com/cpp/rwformulaparser.aspDespués de registrarte. Descarga el archivo : Download Class Source - 7.51 Kb Descomprimelo, agrégalo los archivos a tu proyecto, agrega los "headers" (#include "FormelParser.h") a tu código fuente. Crea un objeto de tipo "CFormulaParser" Y obtienes el resultado en un "double" con : double Calculation(CString strFormula, double xValue, int& nErrorPosition, CString& strErrortext, BOOL strip = true); En el sitio puedes encontrar mayor información en inglés. Saludos,
22
« en: Miércoles 14 de Noviembre de 2007, 05:05 »
Para utilizar el "conector" de mysql solo es necesario que copies el archivo "mysql-connector-java-5.0.4.jar" en el mismo directorio donde ejecutas tu aplicación. Descarga el conector de mysql.com. (Nota: Puede tener otro nombre y otra versión). Otra forma es asegurarte de ejecutar la aplicación desde el directorio donde está el jar. Como por ejemplo: rem Windows cd c:\directorio java -jar c:\directorio\myprograma.jar -cp .;c:\directorio\mysql.jar # Linux cd /home/directorio java -jar /home/directorio/myprograma.jar -cp .:/home/directorio/mysql.jar
como uso conexion a base de datos mysql me dice que la base de datos no esta disponible, El error dice "que la base de datos no está disponible". Cuando no encuentra el conector, debería decir: "ClassNotFoundException" o algo parecido. Deberías ver el error mas detalladamente puesto ... Podría ser que no tengas acceso a la base de datos remota en mysql. Actualmente sobre varias distribuciones Linux, mysql no permite conexiones que no sean sobre 127.0.0.1. Deberías revisar mysql.conf / mysql.cnf / mysql.ini y revisa la opción : bind-address = 127.0.0.1 Otro paso que deberías revisar es el acceso de los usuarios. Actualmente cuando instalas MySQL no le da permisos a root que no sean sobre localhost +-----------+------------------+-------------------------------------------+ | host | user | password | +-----------+------------------+-------------------------------------------+ | localhost | root | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | <- SOLO LOCALHOST | % | olibrea | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | <- CUALQUIER IP
Deberias crear un usuario y darle los permisos necesarios, como por ejemplo: CREATE USER `olibrea`@`%` IDENTIFIED BY 'olibrea'; GRANT ALL PRIVILEGES ON `dbname`.* TO `olibrea`@`%` WITH GRANT OPTION; FLUSH PRIVILEGES; Suerte,
23
« en: Domingo 11 de Noviembre de 2007, 02:02 »
Ok.
24
« en: Domingo 11 de Noviembre de 2007, 00:45 »
Perdón por mi insistencia en el mismo tema pero aún este código funciona correctamente, si ese fuera el camino que hubiera seleccionado para crear las variables con punteros. /* Created by Anjuta version 1.2.4a */ /* This file will not be overwritten */ #include <iostream> int main() { int b1 = 0; int* mat; mat = (int *)malloc(sizeof(int) * 3); do { printf("Ingrese su nota de la materia #%d : ", b1); scanf("%i", &mat[b1]); if (mat[b1] > 20){ printf("Error\n"); } } while (mat[b1] > 20); std::cout << "Hello world" << mat[b1] << std::endl; free(mat); return 0; }
Suerte,
25
« en: Domingo 11 de Noviembre de 2007, 00:11 »
Espero no molestar a nadie con el siguiente comentario: Normalmente cuando posteo una respuesta, lleva consigo un enunciado claro y preciso, basado en una prueba que realizo con anterioridad, en muchos foros he visto que no prueban sus respuestas, y a veces esta equivocada.Es decir, utilicé Linux Debian, Anjuta, gcc, g++ con el FLAG -ansi / -std=iso9899:199409 / -std=iso9899:1999, pero no pude reproducir el error con el programa que se posteó inicialmente. A continuación expongo el código con breves explicaciones: ¿Tiene sentido comparar un puntero con 20? A menos que sea 0 siempre va a ser mayor a 20, debe ser un error de logica y hacer un casting para forzar la comparacion no lo solucionaria. No es un puntero, es "&". Este esa el código que posteó "x1x1x1" y funciona perfectamente: #include <iostream> int main() { int b1 = 0; int mat[] = {1, 2, 3}; do { printf("Ingrese su nota de la materia #%d : ", b1); scanf("%i", &mat[b1]); if (mat[b1] > 20){ printf("Error\n"); } } while (mat[b1] > 20); std::cout << "Hello world" << std::endl; return 0; }
Este es el código que NO se posteo y fué la única forma que pude reproducir el error. #include <iostream> int main() { int b1 = 0; int mat[] = {1, 2, 3}; do { printf("Ingrese su nota de la materia #%d : ", b1); scanf("%i", &mat[b1]); if (&mat[b1] > 20){ /* <--------------------------- & */ printf("Error\n"); } } while (&mat[b1] > 20); /* <--------------------------- & */ std::cout << "Hello world" << std::endl; return 0; }
main.cc:14:error:ISO C++ forbids comparison between pointer and integer main.cc:17:error:ISO C++ forbids comparison between pointer and integerEste es el código que recomiendo, aunque estaba previamente claro, puesto que el error no se presentaba en el código inicial. #include <iostream> int main() { int b1 = 0; int mat[] = {1, 2, 3}; do { printf("Ingrese su nota de la materia #%d : ", b1); scanf("%i", &mat[b1]); if ((int)mat[b1] > 20) { /* <--------------------------- (int) */ printf("Error\n"); } } while ((int)mat[b1] > 20); /* <--------------------------- (int) */ std::cout << "Hello world" << std::endl; return 0; }
Hice varias pruebas ingresando datos y funciona correctamente, el tuyo inicialmente, así como el mío que hacen lo mismo. Suerte,
|
|
|