Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Quitar mensaje (https://www.clubdelphi.com/foros/showthread.php?t=65600)

jandrorm 29-12-2009 13:23:57

Quitar mensaje
 
Buenas:

Tengo lo siguiente en mi programa:
Código:

    try
      MysqlConecta.Connect;
    finally
      if MysqlConecta.Connected then
                  txtInfo.Lines.Add('Conexion existosa')
      else txtInfo.Lines.Add('Error en la Conexion.');
      end;

Todo funciona correctamente, pero quiero quitar el mensaje del SQL ERROR, de cuando falla la conexion, no quiero que muestre el mensaje.

Tambien tengo otra duda:

Quiero hacer un FindWindow que me busque todos los programas puestos en una BD. ¿Es posbile?


Gracias.

droguerman 29-12-2009 14:58:01

usa un try ... catch, el mensaje no aparecerá cuando ejecutes el programa sólo cuando lo ejecutes desde delphi

rgstuamigo 29-12-2009 16:34:51

Puedes aumentar otro bloque try pero con except mas o menos asi:
Código Delphi [-]
 try
    try
      MysqlConecta.Connect;//aqui intento conectarme
    except
      {si deseo capturar el error puedo codificar algo aqui,
        pero como no sea ha escrito nada, pues no generará ni se mostrará 
       ningun mensaje de error. ;)
       }
    end;
 finally
     if MysqlConecta.Connected then
       txtInfo.Lines.Add('Conexion exitosa')
     else txtInfo.Lines.Add('Error en la Conexion.');
 end;
Otra opcion es personalizar el mensaje de error algo asi:
(Esta vez si vamos a escribir codigo en el bloque except )
Código Delphi [-]
try
    try
      MysqlConecta.Connect;//aqui intento conectarme
    except
      txtInfo.Lines.Add('Error en la Conexion.');//<---al ocurrir un error se hace esto ;)
    end;
 finally
     if MysqlConecta.Connected then
       txtInfo.Lines.Add('Conexion exitosa');
   end;
Los dos fragmentos de codigos anteriores serian semejantes.;)
Espero que te hubiera ayudado en algo.:).
Saludos...:)

rgstuamigo 29-12-2009 16:58:04

Agregando una tercera opcion
 
Una tercera opcion seria capturar el error en una variable de tipo Exception, y agregarle lo que quisieramos o personalizar el mensaje de error. ;)
Código Delphi [-]
 try
    try
      MysqlConecta.Connect;//aqui intento conectarme
    except on MyVariable : Exception do//aqui capturo el error ;)
     begin
      MyVariable.Message:='Error en la Conexion.'+#13+#10+'Detalles -->'+#13+#10+'"'+MyVariable.Message+'"';
      txtInfo.Lines.Add(MyVariable.Message); ;)
     end;
    end;
 finally
     if MysqlConecta.Connected then
        txtInfo.Lines.Add('Conexion exitosa');
 end;
Saludos...;)

jandrorm 29-12-2009 20:48:46

Hey perfecto añadi tu segunda opcion, jeje ayuda fue poco me lo hicistes todo jeje. Y alguien me puede resolver mi segunda duda? Muchas gracias a los dos por las respuestas.

rgstuamigo 29-12-2009 21:01:43

Cita:

Empezado por jandrorm (Mensaje 349719)
...
Y alguien me puede resolver mi segunda duda?
...

Sobre tu segunda duda :rolleyes: esteeee.... no se entiende muy bien lo que deseas hacer,debes ser mas claro o explicate mejor.;)
Saludos...:)

jandrorm 29-12-2009 21:38:47

Vale me explico algo mejor, yo quiero tener una BD con una lista de programas y luego quiero en el programa, que me leea la BD y busque cada uno de ellos, de forma que si se añade un nuevo programa a esa BD lo buscara tambien, nose si ahora me explique mejor.

rgstuamigo 29-12-2009 21:55:30

Seguimos en las mismas
 
Pues amigo.... disculpa pero no acabo de entenderte.:confused:
Dices:
Cita:

Empezado por jandrorm (Mensaje 349727)
yo quiero tener una BD...

...hasta ahi todo bien...pero lo que no me cuadra es ...
Cita:

Empezado por jandrorm (Mensaje 349727)
...con una lista de programas...

Como es eso?:confused:
En la Base de dato vas a guardar una lista de Programa?
En que tipo de columna?,etc,etc ???
Cómo ó que exactamente vas a Guardar en la BD?:confused:
Recalco: Por favor se mas detallista y explicate mejor.
Los datos que das no son suficiente.:o
Saludos...:)

jandrorm 29-12-2009 23:23:15

Yo quiero detectar una serie de programas con mi aplicación en delphi. Se que para detectar un programa abierto es:

Código:

  var
  h: HWND;

h := FindWindow(nil, 'lo que sea');

Vale y para no hacer todos los FindWindow y aparte por comodidad. Quiero que al añadir uno a la BD o al editarlo el programa me lo busque. Aclarar que si detecta alguno de los programas el resultado sera el mismo para todos y si no los detecta también.

Entonces en vez de hacer:

Código:

h := FindWindow(nil, 'programa1');
h := FindWindow(nil, 'programa2');
h := FindWindow(nil, 'programa3');
h := FindWindow(nil, 'programa4);

Entonces para ahorrarme el código anterior y no tener que modificar el programa cada vez que añada uno nuevo me gustaría poder cojer el nombre del programa de la BD y que el delphi lo busque en el que esta utilizando la aplicacion.

Haber yo en la BD voy a almacenar una serie de nombres de programas:

Código:

CREATE TABLE `programas` (
  `id` int(9) unsigned NOT NULL auto_increment,
  `nombreprograma` varchar(16) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Espero haberte aclarado un poco mas la idea de lo que quiero hacer y no haberte liado mas jeje, por cierto muchas gracias por tu empeño en ayudarme.

rgstuamigo 29-12-2009 23:49:43

Ahora si.....
 
Creo que por fin te hiciste entender...(aunque me queda ciertas dudas)..pero
Veamos....
Segun lo que te entiendo.. tendrias que hacerte un procedure o function que haga el FindWindow mas o menos asi:
Código Delphi [-]
function Detectar_Programa(const Nombre: String): Boolean;
begin
 Result:=FindWindow(nil,PChar(Nombre))<>0;
end;
Esa Funcion te verifica si un programa esta en ejecusion.
ahora para saber todos los programas que estan corriendo y que tengo registrado en mi base de dato, pues no me queda mas que comparar uno a uno, pero usando la anterior Funcion, mas o menos asi:
(En el evento OnClick de un Boton)
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var aux:String;
begin
 Memo1.Lines.Clear;//voy a usar un memo para mostrar los programas que estan ejecutandose
 MyQuery.SQL.Text:='select nombreprograma from programas;'//mi Consulta SQL
 MyQuery.Open;//ejecuto la consulta
   while not MyQuery.Eof  do // recorro el dataset para ir comprobando uno a uno los nombres
   begin
      aux:=MyQuery.Fields[0].AsString;//obtengo el nombre del programa que esta en el registro actual
        if Detectar_Programa(aux) then //verifico si dicho programa esta corriendo
           Memo1.Lines.Add(aux);//lo adiciono aun memo para mirarlo
      MyQuery.Next;//continuo con el proximo
   end;
end;
Espero te haya sido de utilidad.:)

jandrorm 30-12-2009 00:38:26

Hey perfecto muchisimas gracias de verdad.


La franja horaria es GMT +2. Ahora son las 09:13:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi