• Sábado 21 de Septiembre de 2024, 09:44

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

Páginas: 1 ... 3 4 [5] 6 7 ... 12
101
C/C++ / Re: Cadenas En Tablas
« en: Viernes 4 de Junio de 2004, 22:24 »
Hola!!!!!!

En tu caso en el q debes ordenar palabras por orden alfabetico, lo q yo haria es crear una clase String para asi poder sobrecargar, el "<", el  "=", el ">" para poder ordenar los strings (salvo q el string de la STL tenga sobrecargado el <, > y =, cosa q desconozco).
Luego por tu tema en especial, lo q te conviene es parsear el archivo q tiene los datos cargados y cargarlo en memoria en un vector de la STL o lista de la STL o vector tuyo o lista tuya o arbol o lo q sea, pero q este en memoria. Luego lo ordenas al vector y como ultimo paso recorres secuencialmente el vector ordenado y lo volcas al archivo de destino. Tene en cuenta q si tenes 9 mil millones de palabras distintas, dudo q lo puedas mantener en memoria, pero dudo q ese sea tu caso.

Salu2!!!!!!!

102
C/C++ / Re: Cadenas En Tablas
« en: Viernes 4 de Junio de 2004, 18:43 »
Hola!!!!!!

Lo voy a hacer de la manera mas facil posible, q es usando la STL.

Código: Text
  1.  
  2. //Vector de la STL
  3. #include &#60;vector&#62;
  4. //String de la STL
  5. #include &#60;string&#62;
  6.  
  7. typedef std::string TString;
  8. typedef std::vector&#60;TString&#62; TVector;
  9.  
  10.  

Luego en el main, declaras un vector de tipo TVector y le agregas una cadena. Un ejmplo seria asi:

Código: Text
  1.  
  2. TVector MiVector;
  3. MiVector.push_back(&#34;Hola Mundo!!!&#34;);
  4.  
  5.  


Y listo

Salu2!!!!!!

103
Java / Re: Conversion De Datos
« en: Viernes 4 de Junio de 2004, 16:44 »
Hola!!!!!

Tambien se puede usar el toString();

Salu2!!!!!

104
C/C++ / Re: Helpme!!!!! Con Archivos
« en: Viernes 4 de Junio de 2004, 16:29 »
Hola!!!!

Vos sabes de antemano el tamaño maximo de cada linea del archivo por lo q hacete un
Código: Text
  1.  
  2. char* linea = new char(TAMANIO_MAXIMO_LINEA);
  3.  
  4.  

Luego haces un
Código: Text
  1.  
  2. FILE* pArchivo;
  3. fgets(linea, TAMANIO, pArchivo); //fgets() devuelve cargado &#34;linea&#34; y a parte
  4.                                                 //devuelve NULL (la funcion fgets devuelve un char*) si hubo error. fgets() carga hasta un fin de linea del archivo
  5.  
  6.  
Luego lo q te queda es parser linea y listo!!!!!

Lo q si tene en cuenta es q faltan un millon de cosas como el
Código: Text
  1.  
  2. while (!feof(pArchivo))
  3. {
  4. blablabla();
  5. }
  6.  
  7.  

Salu2!!!!!

105
C/C++ / Ideas Eficiente
« en: Viernes 4 de Junio de 2004, 02:33 »
Hola gente!!!!!!!!

Tengo una pregunta bastante larga pero espero q la puedan leer. No pido codigo, pido ideas que
mejoren la mia, la cual es bastante ineficiente.
Tema: Resolucion de consultas ranqueadas utilizando el metodo del coseno (no lo voy a aplicar
en un 100% porque haria q mucha gente q lea este mensaje no entienda mi problema!!!)

Tengo listas de Id(unsigned long) de archivos y frecuencias de palabras en cada archivo teniendo
como clave a el Id de archivo asi

13 8   15 2   17 3

9   4   13 1   25 2   39 6

Esta seria una lista de dos posiciones. Esta lista la ordeno antes de llegar a este paso.

Luego tengo un lista de estas listas como nodo. Algo asi:
                     
   13   8   9   4   
   15   2   13   1   
   17   3   25   2   
         39   6   
                     
                     
El paso q me tiene loco es este:
Tengo q generar un vector comun con las frecuencias de cada Id de archivo en la posicion
adecuada para cada Id de archivo distinto que tenga.
Ejemplo: En la 1º posicion del vector correspondiente a Id = 13 debo poner un 8 y en la segunda
         debo poner un 1 ya q en la segunda posicion de la lista grande (lista de lista), para
         el Id = 13 tengo frecuencia = 1.
         En la 1º posicion del vector correspondiente a Id = 15 debo poner un 2 y en la segunda
         un 0 porque el Id = 15 solo esta en la primer posicion de la lista grande
         En la 1º posicion del vector correspondiente a Id = 17 debo poner un 3 y en la segunda
         un 0 porque el Id = 17 solo esta en la primer posicion de la lista grande
         Luego, en la 1º posicion del vector correspondiente al archivo Id = 9 (ya estoy en
         el segundo nodo de la lista grande) y en la segunda pongo un 4.
         Asi sucesivamente.

Lo q a mi se me ocurrio es a la lista basica agregarle un atributo "Status" que estaria en
0 si no fue utilizado todavia o en 1 si ya lo fue. Entonces, como recorro la lista grande
un monton de veces buscando Id's, en caso de encontrar uno, lo marco como leido cambiandole
el status y sigo. Esto sirve, para el caso q ultimo comente: el cambio del algoritmo seria:
Luego en la 1º posicion del vector correspondiente al archivo de Id = 9 pongo un cero porque
su status estaria en 0 (nunca visitado) y en la segunda pongo un 4 y le cambio el status.

El problema de esto, es q tengo q recorrer la lista grande secuencialmente un monton de veces
y encima tengo q recorrer las listas pequeñas tambien un monton de veces (aunque para estas,
el recorrido seria una busqueda binaria u otra de mejor orden). Eso me puede insumir demasiado
tiempo y memoria.

Si a alguien se le ocurre alguna idea para hacer esto de una manera mas eficiente, por favor
sere todo oidos. Cualquier sugerencia es buena. Lo unico q pido es q no supongan cambios en
lo q plantee porque no son aplicables al problema porque tendria q ahondar en la explicacion
de indexacion de archivos, busquedas por esos indices, registros de longitud variable,
ablocamientos de memoria, etc.

Salu2!!!!!!!! y esperando mas q nunca una sugerencia

P.D.: Si alguien considera q esto no va en el foro de C/C++ le pido disculpas, pero es el q mas
visito yo y lo pongo aca porque lo estoy desarrollando bajo C++.

P.D.2: Alguien sabe cual es el problema q tiene el compilador de Borland q me tira error
al compilar un archivo cuando fue hecho en un 100% en ANSI C y compilado con gcc asi:
"gcc arch.c -Wall -ansi -pedantic -oexecutable" en un GNU/LINUX MANDRAKE 9.2 y en un DEBIAN sin
tirar ni un warning y compilado con Visual Studio 6.0 bajo W98, WMe, W2000, W2003 y WXP?????  
(quiero remarcar q las opciones de comando pasadas al gcc no permiten siquiera poner
un "//" ya q esto es de C++ y no de C)

106
JSP/Servlets / Re: Ayuda Par Empezar
« en: Miércoles 2 de Junio de 2004, 15:20 »
Hola!!!!!!

www.java.sun.com es la "PAPA"!!!!!

Salu2!!!!! :D

107
C/C++ / Re: Tratamiento De Cadenas: Help
« en: Miércoles 2 de Junio de 2004, 15:17 »
Hola de nuevo!!!!!!

Código: Text
  1.  
  2. if (w_linia05==&#34;MT10&#34;)
  3.      printf(&#34;Cadena MT10 ok&#092;n&#34;);
  4.  
  5.  

El == no funciona para el char*. Es por eso q no entra al "if". Ahi tenes q usar el strcmp() asi:

Código: Text
  1.  
  2. if (strcmp(w_linia05, &#34;MT10&#34;) == 0)
  3.     printf(&#34;Cadena MT10 ok&#092;n&#34;);
  4.  
  5.  

Salu2!!!!!!!

108
C/C++ / Re: Domino
« en: Martes 1 de Junio de 2004, 20:04 »
Hola!!!!!

Antes q nada no me parece q sea correcto lo q hiciste. Sinceramente cuando mire tu post y vi demasiadas lineas, no lo lei y la verdad es q dudo q mucha gente lo haya leido. La idea es hacer alguna pregunta puntual, pero para eso deberias haber mandado el codigo de la funcion q recorria de manera distinta a lo q deberia hacer. Igualmente mucho de implementaciones de grafos no se pero muchisima gente q si debe saberlo pero no podes pretender q se respondan todas tus dudas y en un tiempo corto. Hay preguntas y preguntas q llevan mas tiempo q otras y hay algunas q llevarian a q uno se ponga a debuggear lo q otro hizo y no me parece q eso sea justo. Lo q si es justo es q si uno sabe algo q otro no, se lo pueda responder pero no dar codigo asi porque si. Creo q estuviste mal y espero lo hayas entendido. No te trate mal ni nada de eso, como se q habra gente q si lo hara (y con razon). Espero disculpas, no a mi, sino a la gente del foro q se tomo el tiempo en intentar ayudarte y quizas no pudo o no supo. Espero eso de vos, creo q es justo lo q dije.

Salu2!!!!!!!!!

109
C/C++ / Re: Tratamiento De Cadenas: Help
« en: Martes 1 de Junio de 2004, 17:58 »
Hola!!!!!!!!

Yo creo q con eso deberias estar bien, pero te recomiendo esto:
Como vos trabajas con registros de longitud variable, al comienzo de cada registro podrias reservar 2 bytes (unsigned short) para guardar la longitud del registro y asi sabrias lo q tendrias q levantar en el buffer. Algo asi:

COD1| Longitud Registro |12,23;25,35;45,75;12,11,45,15|
COD2| Longitud Registro |14,31;12,26|
............

Entonces, luego de haber levantado la linea entera del archivo con un fgets() y metido en un buffer, verificas q codigo tiene la linea, y luego salteas el lugar donde esta reservado COD1 y geteas la longitud del registro asi:

memcpy(Longitud, Buffer, 2 ); // 2 = tamaño en bytes del unsigned short        
                                            //(supuestamente!!!!!!!)

Y luego cargas en un buffer auxiliar la cadena hasta la longitud de lo q obtuviste:

unsigned short Long = (unsigned short)atoi(Longitud);
memcpy(BufferAux, Buffer, Long); //Tene en cuenta q Buffer tiene toda la linea, y deberias haber salteado los primeros bytes q contienen el COD? y la longitud. Ese proceso te lo dejo a vos.
Todo esto lo hice porque vos hiciste un for de 50 corridas y sin saber lo q tenias en el registro, y si hicieras mas de lo q tenes verdaderamente podrias estar usando memoria de otra cosa o si hicieras menos, no obtendrias todos los datos. No se, es una idea q te doy, la cual no es muy facil pero si se q es optima.


Salu2!!!!!!!!

110
C/C++ / Re: Tratamiento De Cadenas: Help
« en: Martes 1 de Junio de 2004, 16:44 »
Hola!!!!!!

Si vos tenes algo asi como 20 codigos distintos tu idea estaria bien. Podrias usar el strstr(cadena original, cadena a comparar) q dice si la cadena a comparar esta dentro de la original. Ahora, si tenes infinitos codigos, no se si seria una buena idea el uso de un switch() (el case como en Pascal no existe, aca se llama Switch y es algo asi:


Código: Text
  1.  
  2. switch(opcion)
  3. {
  4.   case 'a': algo();           break;
  5.   case 'b': algodistinto(); break;
  6.   default: otracosa();      break;
  7. };
  8.  
  9.  

Espero q haya servido

Salu2!!!!!!

111
C/C++ / Re: De Fichero A Lista
« en: Martes 1 de Junio de 2004, 15:43 »
Hola!!!!!

Estuve ojeando el codigo y vi un par de cosas mal.

Código: Text
  1. ListaDoble *Insertar(ListaDoble *L, char *s)
  2. {
  3. if ( L == NULL )
  4. {
  5.  
  6. L = new ListaDoble&#59;
  7. L-&#62;largo = strlen(s);
  8. strcpy(L-&#62;reglon,s);
  9. L-&#62;sig = NULL&#59; L-&#62;ant = NULL&#59;
  10. return L;
  11. }
  12.  
  13.  

Deberia ser asi:

L->largo = strlen(s) + 1; //El strlen no cuenta el '\0'

Código: Text
  1. int buscar(ListaDoble *L, char *s,int num)
  2. {printf(&#34;%s&#34;,s);
  3. if (L=NULL)
  4. {printf(&#34;%d --&#62; entro a buscar&#092;n&#34;,num );
  5. if (L-&#62;reglon==s)
  6. printf(&#34;esta&#34;);
  7. return buscar(L-&#62;sig,s, num+1);
  8.  
  9.  

El (L->renglon == s) no existe salvo q uses string de la STL. Al usar char* deberias usar strcmp() . Esta funcion devuelve 0 si las cadenas son iguales.


Salu2!!!!!!!

112
Visual C++ / Re: Cadenas De Texto Largas
« en: Lunes 31 de Mayo de 2004, 22:07 »
Hola!!!!!

Si queres leer una linea entera, usa fgets() q lee hasta un \n o un \r\n en UNIX (creo q era asi). Para recibir toda esa informacion, usa un char* y listo o un string de la STL. Luego, para separar palabras deberas tener en cuenta los espacios, los signos de puntuacion y demas.
Recorda q el \0 lo tendras al fin de la cadena y no a fin de cada palabra. Es por eso q tenes q parser la cadena levantada del archivo.

Salu2!!!!!!!

113
Visual C++ / Re: Como Sumo Matrices!!!
« en: Lunes 31 de Mayo de 2004, 21:34 »
Hola de nuevo!!!!

Las matrices se suman de una sola manera: posicion a posicion y tienen q ser de la misma dimension. Como sumar???, bueno, es recorrer todas las posiciones de las matrices e ir sumando sus coordenadas [Columna][Fila] creando una tercer matriz donde estara el resultado o cargando uno de los dos sumandos con el resultado.

Salu2!!!!!!!!!

114
Visual C++ / Re: Matrices
« en: Lunes 31 de Mayo de 2004, 00:03 »
Hola!!!!!!!!!

Primero pide por pantalla un "n" q deberia ser la dimension de la matriz cuadrada (no se para q lo hace porque la declara como "int a[3][3];" de 3 filas por 3 columnas.

Luego haces esto:

for (j=0;j<n;j++)
  for (i=0;i<n;i++)
  {
     printf("Ingrese numero:");
     scanf("%d",&a[j]);
  }

Aca carga en la matriz lo q el usuario le va ingresando.

Luego para imprimir la matriz hace lo mismo. Tiene q recorrer todo para imprimir por pantalla, es por eso q lo hace otra vez al ciclo. Esto se tiene q hacer, porque nadie te provee una libreria a la cual le digas "imprimirMatiz(a[][n])" (cuando pases una matriz por parametro, no hace falta q pases la primer longitud, pero si las demas en caso de q tenga). Como no existe nada de eso, lo tenes q hacer vos, y esta es la manera de hacerlo:

for (j=0;j<n;j++)
  for (i=0;i<n;i++)
    printf("%d",a[j]);

Por ultimo, getch() espera un caracter del usuario para finalizar el programa. Proba de sacarlo y ejecuta el programa. Vas a ver q la ventana se abre y cierra rapidamente cuando tiene q imprimir. Despues ejecutalo otra vez con el getch() y vas a ver q tenes q apretar una tecla paar q se cierre la venta del programa.
getch();


Salu2!!!!!!!!

115
JSP/Servlets / Re: Jdbc-servlet
« en: Domingo 30 de Mayo de 2004, 23:47 »
De nada!!!!!!!!!

Pero............te sirvio o no????

Salu2!!!!!!!

116
Java / Re: Transformar De Numero A Letras
« en: Domingo 30 de Mayo de 2004, 23:44 »
Hola!!!!!!!!

Con el metodo charAt(Posicion) creo q se puede hacer todo. No diga q sea simple, pero si q no es algo imposible de hacer. Es mas bien largo y aburrido lo q tenes q hacer, pero deberia salir con un poco de "horas silla".
Creo q lo mas feo es lo de los numeros, salvo q si tenes esto: "123" debas sacar por pantalla "uno dos tres". Eso no es dificil, lo dificil seria sacar esto "ciento veintitres". Ahi, la cosa se complica y bastante. Pero hay q empezar por algo, no????

Salu2!!!!!! ;)

117
JSP/Servlets / Re: Jdbc-servlet
« en: Viernes 28 de Mayo de 2004, 15:21 »
El NULLPointerException lo devuelve porque no habras instanciado algo pero si compila pero no anda. No entiendo q puede llegar a ser, pero si te puedo pasar un codigo, la respuesta es si, te doy un servlet q tira una consulta, ahi va:

package mcpatos;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

/**
 * <p>Title: Mc Pato's</p>
 * <p>Description: Delivery de Comidas Rapidas</p>
 * <p>Copyright: Copyright © 2004</p>
 * <p>Company: Gonzalez & Tavasci</p>
 * @author Gonzalez Nicólas, Tavasci Dozo Pablo
 * @version 1.0
 */

public class ServletLogueo extends ServletBase {

  /** Procesa la petición del método post.
   *  @param  request
   *  @param  response
   *  @throws ServletException
   *  @throws IOException*/
  public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException
  {
    if ((request.getParameter("AccionServidor")).equals("AccionIngresoUsuarios"))
      doLogin(request, response);
    if ((request.getParameter("AccionServidor")).equals("AccionCerrarSesion"))
      doCloseSession(request, response);
  }

  /** Metodo que despacha a distintas paginas de acuerdo a si el usuario
   *  se encuentra registrado o no
   *  @param  request
   *  @param  response
   *  @throws ServletException
   *  @throws IOException*/
  private void doLogin(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException
  {
    response.setContentType(CONTENT_TYPE);
    session = request.getSession(true);
    session.setMaxInactiveInterval(300); //Seteamos 5 minutos de sesión por default

    String Username = request.getParameter("username");
    String Password = request.getParameter("password");

    //Verifico el nombre de usuario y contraseña
    //donde username y password son los nombres de los edit text de la
    //pagina HTML de inicio
    if (isRegistered(Username, Password))
    {
      GoToPage("/SitioMc/Consultas/Usuario.jsp", request, response);
    }
    else
      GoToPage("/SitioMc/Errores/UsuarioNoRegistrado.html", request, response);
  }

  /** Metodo que verifica si el usuario ingresado esta registrado
   *  @param username
   *  @param password
   *  @returns true o false */
  private static boolean isRegistered(String username, String password)
  {
    if ((username == null) || (password == null))
      return false;

    boolean success = false;
    java.sql.Statement ibLogin = null;
    java.sql.ResultSet dsLogin = null;

    // Ejecuto la consulta en caso de ser posible
    try
    {
      ibLogin = McPatosDataBase.getConnection().createStatement();
      dsLogin = ibLogin.executeQuery("select Nombre, Clave, CodigoCliente, Administrador from usuarios where nombre = '" + username + "' and clave = '" + password + "'");
    }
    // Atrapo la excepcion correspondiente a la consulta
    catch (java.sql.SQLException e)
    {
      System.out.println ("Error al tirar el select a Usuarios.");
      showSQLException (e);
    }
    // Analizo los resultados de la consulta y los comparo contra los
    // recibidos por parámetro
    try
    {
      while (dsLogin.next())
      {
        if ( (username.equals(dsLogin.getString("Nombre")))
        &&   (password.equals(dsLogin.getString("Clave"))) )
        {
          session.setAttribute("Nombre",username);
          String customerCode = dsLogin.getString("CodigoCliente");
          session.setAttribute("Codigo",customerCode);
          session.setAttribute("Administrador",dsLogin.getString("Administrador"));

          if (dsLogin.getInt("CodigoCliente") > 0)
          {
            try
            {
              dsLogin = ibLogin.executeQuery("select Nombre from Clientes where codigo = '" + customerCode + "'");
              dsLogin.next();
              session.setAttribute("Nombre", dsLogin.getString("Nombre"));
              success = true;
            }
            catch (java.sql.SQLException e)
            {
              System.out.println ("Error al tirar el select a Clientes.");
              showSQLException (e);
            }
          }
          else
          {
            session.setAttribute("Nombre", username + " - Personal del local");
            success = false;
          }
        }
      }

      try { if (dsLogin!=null) dsLogin.close (); } catch (java.sql.SQLException e) { showSQLException (e); }
      try { if (ibLogin!=null) ibLogin.close (); } catch (java.sql.SQLException e) { showSQLException (e); }

    }
    // Atrapo la excepcion correspondiente a la navegacion de los resultados
    catch (java.sql.SQLException e)
    {
      System.out.println ("Incapaz de navegar por los resultados de la consulta dsLogin");
      showSQLException (e);
    }
    // En caso de no existir el registro en la base de datos, el metodo
    // devuelve false
    return success;
  }

  /** Metodo que cierra la sesion y despacha al inicio del Sitio
   *  @param  request
   *  @param  response
   *  @throws ServletException
   *  @throws IOException*/
  private void doCloseSession(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException
  {
    response.setContentType(CONTENT_TYPE);
    session.setAttribute("Carrito", null);
    session = null;
    GoToPage("/SitioMc/index.html", request, response);
  }

}

118
C/C++ / Re: Acerca De Un Chat ...
« en: Jueves 27 de Mayo de 2004, 17:10 »
Te lo mande y ni un gracias, flojo de tu parte man, me tomo el trabajo de buscarlo, acomodarlo un poco y nada!!

Salu2!!!!!!!!!

119
JSP/Servlets / Re: Jdbc-servlet
« en: Jueves 27 de Mayo de 2004, 16:48 »
Hola!!!!!

Proba poniendo a con como miembro static del servlet ConsultaServlet asi:

public class ConsultaServlet extends HttpServlet{
  private static Connection con = null; //Puede ser protected en caso q heredes de este  
                                              //servlet y necesites la conexion en los hijos
Un metodo static es un metodo q no "ve" a this, o sea, se lo puede llamar sin instancias de la clase y un atributo static es un atributo q se mantiene durante la vida de la clase.

Luego en el init() instancias "con" usando getConnection() y acordate q eso te va a andar.

En el destroy del servlet, hace un close de la conexion a la base. Fijate en el close de la clase q te mande como se hace!!

Salu2!!!!!

Responde si anduvo o no

120
C/C++ / Re: Clases Abstractas Y Herencia
« en: Jueves 27 de Mayo de 2004, 16:35 »
Qlix=D! : tenes razon en lo q decis. Yo deberia haber explicado lo q pusiste sobre los destructores virtuales y re-coincido con vos q el hecho de tener destructores virtuales no implica clases abstractas.


Salu2!!!!!!

121
Visual C++ / Re: Comunicarce Por La Red
« en: Jueves 27 de Mayo de 2004, 15:21 »
Hola!!!!!

Lee sobre Sockets. (www.google.com, www.recursosprog.com.ar)
Cualquier cosa, pregunta

Salu2!!!!

122
JSP/Servlets / Re: Jdbc-servlet
« en: Jueves 27 de Mayo de 2004, 15:16 »
Hola!!!!!!

Lo q haces mal creo es cuando llamas al getConnection() porque le pasas un solo parametro y lo otro es q no cargas los drivers de la base de datos.
Mira este .java q mando q se conecta a una base de datos de Interbase. Es una clase q maneja eso con un constructor privado. Creo q esta buena, ahi va:

package mcpatos;

/**
 * <p>Title: Mc Pato's</p>
 * <p>Description: Delivery de Comidas Rapidas</p>
 * <p>Copyright: Copyright © 2004</p>
 * <p>Company: Gonzalez & Tavasci</p>
 * @author Gonzalez Nicólas, Tavasci Dozo Pablo
 * @version 1.0
 */

public class cDataBase
{
  /** Driver de la base de datos */
  private static java.sql.Driver     Driver     = null;
  /** Conexion a la base de datos */
  private static java.sql.Connection Connection = null;
  /** Instancia de la clase cDataBase */
  private static cDataBase Instance = null;

  /** Constructor privado. Llama al metodo Connect()*/
  private cDataBase()
  {
    this.Connect();
  }

  /** Metodo static q llama al constructor privado
   *  @returns Instancia unica de la clase */
  public static cDataBase getInstance()
  {
    if (Instance == null)
      Instance = new cDataBase();
    return Instance;
  }

  /**
   * @returns Conexion a la base de datos*/
  public java.sql.Connection getConnection()
  {
    return this.Connection;
  }

  /** Metodo que se conecta a la base de datos de la aplicacion */
  private void Connect()
  {
    String databaseURL = "jdbc:interbase://localhost/C:/Resin/doc/BaseGDB/base.gdb";
    String user = "SYSDBA";
    String password = "masterkey";
    String driverName = "interbase.interclient.Driver";

    try
    {
      // Carga del driver en memoria.
      try
      {
        Class.forName(driverName);
      }
      catch (java.lang.ClassNotFoundException e)
      {
        System.out.println ("InterClient no se encuentra definido en el class path.");
        System.out.println (e.getMessage ());
        return;
      }

      // A esta altura el driver debería estar registrado con el driver manager.
      try
      {
        Driver = java.sql.DriverManager.getDriver (databaseURL);
        System.out.println ("InterClient version " +
                            Driver.getMajorVersion () +
                            "." +
                            Driver.getMinorVersion () +
                            " registrada con el driver manager.");
      }
      catch (java.sql.SQLException e)
      {
        System.out.println ("No se ha podido encontrar InterClient entre los drivers registrados.");
        return;
      }

      // Interclient esta ahora registrado con el driver manager
      // Ahora se intentara conseguir una conexion con la base de datos
      try
      {
        Connection = java.sql.DriverManager.getConnection (databaseURL, user, password);
        System.out.println ("Conexion establecida.");
      }
      catch (java.sql.SQLException e)
      {
        System.out.println ("Error al establecer la conexion.");
        return;
      }

      // Deshabilitacion del autocommit
      try
      {
        Connection.setAutoCommit (false);
        System.out.println ("Auto-commit deshabilitado.");
      }
      catch (java.sql.SQLException e)
      {
        System.out.println ("Error al deshabilitar el auto-commit.");
        return;
      }
    }
    finally
    {
    }
  }

  /** Cierra la conexion a la base de datos*/
  public void Close()
  {
    try
    {
      if (Connection != null)
        Connection.close();
    }
    catch(java.sql.SQLException e)
    {
      System.out.println("No se pudo cerrar la conexion a la base de datos");
    }
  }
}


Salu2!!!! y responde si te sirvio o no!!!!!

123
C/C++ / Re: Clases Abstractas Y Herencia
« en: Jueves 27 de Mayo de 2004, 15:07 »
Hola!!!!!

El destructor debe ser virtual siempre q tengas herencia (publica, protegida, privada, virtual) para q se liberen todos los objetos de una forma correcta.
Con el tema, de los metodos virtuales, coincido con Qlix=D! .

Salu2!!!!!

124
Java / Re: Clases
« en: Miércoles 26 de Mayo de 2004, 19:23 »
Gracias JuanK!!!

Te lo pregunte porque estoy empezando a hacer un mini servidor en JAVA con multiprocesamiento y queria saber si tenia q proteger la memoria compartida por los hilos, o JAVA hace algo como vos decis, o sea, q las clases mismas tienen en cuenta accesos a la memoria al mismo tiempo por dos o mas hilos distintos. Cuando lo hice en C++ tuve q ser cuidadoso en ese tema

Salu2!!!!

125
Java / Re: Clases
« en: Miércoles 26 de Mayo de 2004, 16:29 »
Hola Juank!!

Te hago una pregunta de ignorante: no hay Critical Sections en JAVA????

Salu2!!!!!

Páginas: 1 ... 3 4 [5] 6 7 ... 12