Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-07-2015
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
Utilizacion del With

Hola:
Tengo una duda porque siempre estube programando con Delphi 7 y recientemente he estado incursionando en Delphi y C++ XE2 y en D7 en el codigo uno podia poner una sintasis como esta para una simple consulta a un BD:
Código Delphi [-]
with Prueba do
begin
  Close;
  Open;
end;

y estuve buscando en la ayuda de ambos y no lo vi. Aunque el Delphi XE2 cuando compila, no lo muestra como error el C++ si. Es que esa expresion caduco o es que hay algo que lo sustituyo, porque la expresion with ahorraba buena cantidad de codigo.

Saludos
Luis Garcia
Responder Con Cita
  #2  
Antiguo 10-07-2015
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Hola Luis,

Hasta donde se, no ha caducado. No veo un por qué. Sin embargo siempre se ha advertido sobre el cuidado de utilizarlo pues podría generar ambiguedades que no advierte el compilador (warnings)

Te dejo este enlace

saludo,
Responder Con Cita
  #3  
Antiguo 10-07-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Nunca uses with, te vas a ahorrar un millardo de problemas
Responder Con Cita
  #4  
Antiguo 10-07-2015
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Yo también considero que el With actual es muy nocivo si no se utiliza responsablemente, hay que tratar de evitarlo. Pero les recomiendo leer mi respuesta en la discusión enlazada por gatosoft:
Cita:
Empezado por gatosoft Ver Mensaje
Te dejo este enlace
Aparece hasta el final.

Saludos.
Responder Con Cita
  #5  
Antiguo 10-07-2015
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
Utilizacion del With

Voy a mirar el enlace y muchas gracias por sus comentarios.

Saludos
Luis Garcia
Responder Con Cita
  #6  
Antiguo 10-07-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola lgarcia.
Cita:
Empezado por lgarcia Ver Mensaje
...
Aunque el Delphi XE2 cuando compila, no lo muestra como error el C++ si.
...
Lo último que mencionas es totalmente normal y de esperar; ya que C++ no posee un comando equivalente al with de Delphi, que como bién te han comentado hay que usar con cuidado.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 10-07-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
lgarcia,

Cita:
Empezado por lgarcia
...Utilizacion del With...


Adicionalmente a todo lo mencionado, te sugiero revisar esta información referente al uso de la sentencia With:
Espero sea útil

Nelson.
Responder Con Cita
  #8  
Antiguo 13-07-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si fuera por mi, habría que prohibirlo directamente...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 13-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Neftali Ver Mensaje
Si fuera por mi, habría que prohibirlo directamente...
Yo nunca lo uso.
Responder Con Cita
  #10  
Antiguo 13-07-2015
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Cita:
Empezado por Neftali Ver Mensaje
Si fuera por mi, habría que prohibirlo directamente...
Pues yo si suelo utilizarlo aunque, como ya se dijo, teniendo cuidado. Nunca anido sentencias with.

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #11  
Antiguo 14-07-2015
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Yo utilizo with continuamente ya que me ahorra mucho código y, nunca he tenido ningún problema.

He combinado with con dos componentes a la vez, TEdit y TStaticText y sin problema aparente y, aún lo sigo utilizando por la gran cantidad de código que me ahorro.

Si sabes utilizarlo y sabes cuales son sus beneficios y perjuicios, utilízalo en beneficio tuyo.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #12  
Antiguo 14-07-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No digo que se no sea útil y ahorre tiempo, pero eso provoca que el código sea menos claro y más difícil de debuggar.
por ende más propenso a errores.
Y esas son dos cosas que para mi tienen suma importancia, la claridad y la seguridad en cuanto a fallos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #13  
Antiguo 14-07-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Si mal no recuerdo lo lei en StackOverflow. Pero seamos sinceros, el with lo usamos porque a veces tenemos declaradas variables (bueno mas que variables, componentes) asi:

Código Delphi [-]
 { TFormX Private Declarations } 
  Tabla_Registro_Historico_Ventas: TADOQuery;

..
procedure HacerAlgoConLaTabla;
begin
  // esto es realmente tedioso
  if not(Tabla_Registro_Historico_Ventas.Active) then
    Tabla_Registro_Historico_Ventas.Open;

  Tabla_Registro_Historico_Ventas.Edit;
  Tabla_Registro_Historico_Ventas.FieldByName('Apellidos_Y_Nombres_Cliente').AsString := 
                                               Tabla_Registro_Historico_Ventas.FieldByName('Apellido').AsString + ', ' + 
                                               Tabla_Registro_Historico_Ventas.FieldByName('Nombres').AsString
  Tabla_Registro_Historico_Ventas.Post;
end;

procedure MasFacil;
var
  t: TADOQuery;
begin
  t := Tabla_Registro_Historico_Ventas;
  // esto es mucho mas amigable 
  if not(t .Active) then
    t .Open;

  t .Edit;
  t .FieldByName('Apellidos_Y_Nombres_Cliente').AsString := t .FieldByName('Apellidos').AsString + ', ' + t.FieldByName('Nombres').AsString 
  t .Post;
end;
Responder Con Cita
  #14  
Antiguo 15-07-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Justamente lo segundo es lo ideal.

(1) La declaración de componentes es clara.
(2) Escribimos lo mínimo posible.
(3) El debug y seguimiento es claro y sin errores.

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #15  
Antiguo 15-07-2015
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Código Delphi [-]
 { TFormX Private Declarations } 
  Tabla_Registro_Historico_Ventas: TADOQuery;

..
procedure HacerAlgoConLaTabla;
begin
  // esto es realmente tedioso
  if not(Tabla_Registro_Historico_Ventas.Active) then
    Tabla_Registro_Historico_Ventas.Open;

  Tabla_Registro_Historico_Ventas.Edit;
  Tabla_Registro_Historico_Ventas.FieldByName('Apellidos_Y_Nombres_Cliente').AsString := 
                                               Tabla_Registro_Historico_Ventas.FieldByName('Apellido').AsString + ', ' + 
                                               Tabla_Registro_Historico_Ventas.FieldByName('Nombres').AsString
  Tabla_Registro_Historico_Ventas.Post;
end;

procedure OtraForma;
begin
  // esto también puede ser
  with Tabla_Registro_Historico_Ventas do
  begin
    if (not Active) then
      Open;

    Edit;

    FieldByName('Apellidos_Y_Nombres_Cliente').AsString :=
      FieldByName('Apellido').AsString + ', ' + 
      FieldByName('Nombres').AsString;

    Post;
  end;
end;

procedure OtraMas;
var
  FadoCnn: TADOConnection;
begin
  FadoCnn := TADOConnection.Create(nil);
    FadoCnn.LoginPrompt := False;
    FadoCnn.ConnectionString := ;

  with TADOQuery.Create(nil) do
  begin
    Connection := FadoCnn;

    SQL.Add('SELECT');
    SQL.Add('    Apellidos_Y_Nombres_Cliente');
    SQL.Add('    ,Apellido');
    SQL.Add('    ,Nombres');
    SQL.Add('  FROM Clientes');

    Open;
    
    Edit;

    FieldByName('Apellidos_Y_Nombres_Cliente').AsString :=
      FieldByName('Apellido').AsString + ', ' + 
      FieldByName('Nombres').AsString;

    Post;

    FadoCnn.Free;
    Free;
  end;
end;

Para gustos los colores.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #16  
Antiguo 15-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por olbeup Ver Mensaje
Para gustos los colores.
No es cuestión de gustos
Responder Con Cita
  #17  
Antiguo 16-07-2015
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No es cuestión de gustos
Bueno, yo lo utilizo bastante por no decir siempre y me va muy bien.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #18  
Antiguo 16-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por olbeup Ver Mensaje
Bueno, yo lo utilizo bastante por no decir siempre y me va muy bien.
Bueno, yo no lo utilizo nunca y también me va muy bien
Responder Con Cita
  #19  
Antiguo 16-07-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por olbeup Ver Mensaje
Bueno, yo lo utilizo bastante por no decir siempre y me va muy bien...
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bueno, yo no lo utilizo nunca y también me va muy bien...
Moraleja: El uso u omisión de la sentencia with no afecta en absoluto el progreso personal.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #20  
Antiguo 16-07-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Daniel,

Cita:
Empezado por ecfisa
...El uso u omisión de la sentencia with no afecta en absoluto el progreso personal...


Nelson.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Utilización de Uses Livey Varios 1 26-05-2011 00:20:17
Utilización DBLookupListBox? jona-182 SQL 0 11-09-2008 04:16:36
Utilización del iif efelix MS SQL Server 11 22-01-2007 19:13:42
utilizacion trigger dmagui Firebird e Interbase 16 10-06-2005 01:38:55
Utilización de DLL's Enan0 Varios 2 19-05-2004 20:43:13


La franja horaria es GMT +2. Ahora son las 21:37:00.


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
Copyright 1996-2007 Club Delphi