Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-08-2012
viveba viveba is offline
Miembro
 
Registrado: nov 2006
Posts: 24
Poder: 0
viveba Va por buen camino
Bloques

Es posible construir un bloque del tipo with ... do en c++?

digamos que quiero hacer esto (que hacía en delphi) en C++builder:

with ComponenteX do
begin
Propiedad1 := ....;
Propiedad2 := ....;
..............
end;

desde ya, muchas gracias a todos.
Responder Con Cita
  #2  
Antiguo 31-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner títulos descriptivos a tus preguntas, "bloques" no describe nada.

Y no olvides poner los tags al código fuente, ejemplo:



¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Gracias
Responder Con Cita
  #3  
Antiguo 01-09-2012
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 viveba Ver Mensaje
Es posible construir un bloque del tipo with ... do en c++?

digamos que quiero hacer esto (que hacía en delphi) en C++builder:

with ComponenteX do
begin
Propiedad1 := ....;
Propiedad2 := ....;
..............
end;

desde ya, muchas gracias a todos.
Hola.

No, pero podes reducir el largo de los nombres para que no sea tan pesado usarlos si tenes que realizar muchas asignaciones:
Código:
  TStringGrid *sg = static_cast <TStringGrid*> (StringGrid1); 
  TClientDataSet *cds = (TClientDataSet*) ClientDataSet1; // otro modo
  TDateTimePicker *dtp = static_cast<TDateTimePicker*>(DateTimePicker1); 
  //etc.
En este caso podrías usar sg en lugar de StringGrid1, cds en lugar de ClientDataSet1 y dtp en lugar de DateTimePicker1.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 01-09-2012
viveba viveba is offline
Miembro
 
Registrado: nov 2006
Posts: 24
Poder: 0
viveba Va por buen camino
Gracias por responder tan rápido.
Ya estoy incorporándolo.
Responder Con Cita
  #5  
Antiguo 10-09-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
No (...)
¿Seguro? Hace muchísimo que no trabajo con C++, pero creo recordar que también tienen bloques with <name> { ... }. ¿O me estoy liando con PHP y JavaScript?
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #6  
Antiguo 10-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No sabía que JavaScript tenía with. PHP, casi estoy seguro, no lo tiene.

// Saludos
Responder Con Cita
  #7  
Antiguo 10-09-2012
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.

En C/C++ no existe una declaración equivalente al with de Delphi.

Y creo que en Delphi hay que ser moderado con su uso por que puede hacer dificultosa la lectura del código y hasta producir resultados indeseados si no se utiliza correctamente, como por ejemplo:
Código Delphi [-]
  with Edit1, ListBox1, ComboBox1 do
  begin
    Text := 'xxx';   // ??
    Items.Add(Text); // ??
    ...
  end;
Por otro lado, usándolo bién, es una herramienta que simplifica y hasta clarifica el código.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 10-09-2012 a las 19:48:51. Razón: identación
Responder Con Cita
  #8  
Antiguo 10-09-2012
viveba viveba is offline
Miembro
 
Registrado: nov 2006
Posts: 24
Poder: 0
viveba Va por buen camino
Hola!

No se mucho de C, apenas un poquito de pascal (delphi) y hasta ahí nomás, pero si puedo decir que lo siguiente:
with Edit1, ListBox1, ComboBox1 do
begin
Text := 'xxx'; // ??
Items.Add(Text); // ??
...
end;

No funciona pues da "error de ambigüedad" y es lógico; with (con) no puede identificar a cual identificador le corresponde cada propiedad, cuando los identificadores tienen las mismas propiedades.

la clausula with solo debe usarse cuando uno pretende darle claridad a un código, seguir ciertas normas de programación, no afecta al funcionamiento de un programa ni lo hace más grande ni más lento.

desde mi lugar -soy profesor- lo uso bastante, pero solo por cuestiones didácticas.

gracias por todo lo que se dijo al respecto y a todos los que participaron de mi simple comentario.
Responder Con Cita
  #9  
Antiguo 10-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por viveba Ver Mensaje
No funciona pues da "error de ambigüedad" y es lógico; with (con) no puede identificar a cual identificador le corresponde cada propiedad, cuando los identificadores tienen las mismas propiedades.
¿En qué versión de delphi? Al menos en la 7 no da error. De hecho, tal como dice la ayuda, cuando se ponen múltiples objetos, es como si se anidaran los bloques, es decir, poner:

Código Delphi [-]
with Edit1, Edit2 do
  Text := 'Hola mundo';

es equivalente poner:

Código Delphi [-]
with Edit1 do
  with Edit2 do
    Text := 'Hola';

y el Edit afectado es el 2 por estar en el bloque más inmediato a la asignación.

// Saludos
Responder Con Cita
  #10  
Antiguo 10-09-2012
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.

No voy a argumentar el por que no tendría que mostrar error de ambiguedad ya que roman lo ha echo de forma inmejorable. En el ejemplo que puse, quién recibiría la cadena 'xxx' en su propiedad Text es ComboBox1.

Yo también uso la version 7 de Delphi y no recibo siquiera una advertencia, aunque puede ser que en versiones posteriores sea así...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Registros en en bloques de 100 o mas... Jose Roman Conexión con bases de datos 18 25-06-2010 17:42:13
Interconexion de bloques astwin OOP 19 15-04-2009 17:50:31
Generar bloques de números Natasha Nortman Varios 8 30-03-2008 15:47:54
Esquemas de bloques david.rguez Gráficos 1 01-09-2007 00:05:01
Bloques De Numeros Consecutivos dany2006 C++ Builder 5 15-11-2006 21:06:16


La franja horaria es GMT +2. Ahora son las 21:15:34.


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