Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > La Taberna
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 19-09-2016
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
No estoy de acuerdo con dejarlo pero advertir que no es buena práctica. Imaginar a Marco Cantu diciendo: "miren, tenemos una sintaxis que es el with, recomendamos no usarlo, pero hay código viejo dando vueltas por ahí, así que no lo sacamos por eso" me parece absurdo. En el peor de los casos estaría bien la posibilidad de "activar" el with usando alguna directiva de compilación. Pero sigo pensando que es dedicarle tiempo a una tontería, porque el mensaje es siempre el mismo: no conviene usar el with.

Sería preferible ir por el camino de SmallTalk en donde no existe el "void" o el "no retorno" de un método; traducido a Delphi sería que los métodos que no son funciones devuelvan siempre el objeto receptor

Evidentemente sería un problema para las propiedades porque no habría forma de discernir entre sí el siguiente método va para el objeto inicial, o para el retorno de la propiedad. Estaríamos obligados a usar "setters" así que no es tan viable

Aún así sostengo que prefiero que inviertan el tiempo en otras cuestiones
Responder Con Cita
  #22  
Antiguo 19-09-2016
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 AgustinOrtu Ver Mensaje
No estoy de acuerdo con dejarlo pero advertir que no es buena práctica. Imaginar a Marco Cantu diciendo: "miren, tenemos una sintaxis que es el with, recomendamos no usarlo, pero hay código viejo dando vueltas por ahí, así que no lo sacamos por eso" me parece absurdo.
Es cuestión de enfoques. Lo que a ti te parece absurdo a mi me parece razón más que suficiente para no tocar el with. Ahora, qúe diga exactamente Marco Cantú, no lo sé. Aquí, por lo menos, habla de su uso, sus ventajas y desventajas, sin tomar realmente partido.

Yo soy de los que, en ocasiones, usa el with; normalmente sin anidarlos y asignando exclusivamente propiedades del registro u objeto en cuestión. Es, para mi, una manera clara -al leer por encima el código- de decir, ESTO es lo que voy a hacer con el registo/objeto.

Cita:
Empezado por AgustinOrtu Ver Mensaje
En el peor de los casos estaría bien la posibilidad de "activar" el with usando alguna directiva de compilación.
De acuerdo, aunque la opción por defecto tendría que ser width activado

Cita:
Empezado por AgustinOrtu Ver Mensaje
traducido a Delphi sería que los métodos que no son funciones devuelvan siempre el objeto receptor

Evidentemente sería un problema para las propiedades porque no habría forma de discernir entre sí el siguiente método va para el objeto inicial, o para el retorno de la propiedad. Estaríamos obligados a usar "setters" así que no es tan viable
Además de no ser viable, sería, éso sí, una fuente de confusión. Tendríamos la versión moderna del código espaghetti tipo jQuery.

Cita:
Empezado por AgustinOrtu Ver Mensaje
Aún así sostengo que prefiero que inviertan el tiempo en otras cuestiones
De acuerdo en esto.

LineComment Saludos
Responder Con Cita
  #23  
Antiguo 19-09-2016
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
Y alguien sabe si existe alguna alternativa en los compiladores modernos? algo coo un alias (por ejemplo los de SQL)?

Personalmente lo uso por que en algunos caso es complicado tener caenas de codigo tan largas, visualmente es molesto.

Saludos.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #24  
Antiguo 19-09-2016
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 bitbow Ver Mensaje
Y alguien sabe si existe alguna alternativa en los compiladores modernos? algo coo un alias (por ejemplo los de SQL)?
Ya mamcx mencionó arriba que en Python (aunque no es compilado) existe una versión with con alias.

LineComment Saludos
Responder Con Cita
  #25  
Antiguo 19-09-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Lo del with en Delphi es mas porque es un lenguaje que no es conciso y no tiene como declarar vbles fuera de su bloque. Pero en general es algo superfluo e innecesario en la mayoria de los lenguajes.

En python se usa por una razon diferente y es que encapsula el cierre automatico de un recurso, y eso lo hace UTIL.

En vez de:

Código PHP:

open('file.txt''r')
try:
   ...
finally:
  
f.close() 

Se hace:


Código PHP:

with open
('file.txt''r') as f:
   ..
   .. 
Asi que no solo acorta el codigo, sino que automatiza el manejo de recursos (y en algunos casos, mucho mas que darle el "close" a un objeto. Esto permite automatizar aun mas.)
__________________
El malabarista.
Responder Con Cita
  #26  
Antiguo 19-09-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Que debate nos dejó Al ¿he?

Yo tampoco uso with. Me acostumbré a no usarlo desde el comienzo.
Desconozco si hay mucho código en la VCL que esté fuertemente atado al with como para tratar de justificar su existencia por la compatibilidad hacia atrás.
Agustin tiene razón al decir que no se puede pretender tener compatibilidad hacia atrás 100%, en algún momento algo sale caro y deberá toquetearse. Es inevitable.

Yo tengo la creencia que puede tener su cuota de uso y comodidad, bajo ciertas condiciones. Por eso no veo tan necesario mantener la postura de que debiera de desaparecer.

Ahora hay que encontrar el equilibrio entre su mal uso o mala práctica, la facilidad que aporta, y que cuente con una forma segura de poder identificar adecuadamente la construcción (objeto, record, etc) inequivocamente.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #27  
Antiguo 19-09-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Delphius Ver Mensaje
Ahora hay que encontrar el equilibrio entre su mal uso o mala práctica, la facilidad que aporta, y que cuente con una forma segura de poder identificar adecuadamente la construcción (objeto, record, etc) inequivocamente.
Pero eso nos deja en el mismo punto. Si todo depende de que "cada cual se supone que lo debe usar bien", pues así es como es ahora. Y si se cambia la sintaxis para que no se ambiguo, eso hace incompatible el código anterior (a menos que haya un reformateador de código que reescriba el with donde aparezca, recursivamente a todas las dependencias - como que solo se ha funcionado exitosamente con GO-).

A diferencia del GOTO que tiene casos de uso especializados utiles, el WITH es pura conveniencia. En tal caso, entre "medio-cambiarlo" o quitarlo es mejor quitarlo y así no hay ambigüedad en que hacer (igual apuesto que la mayoría de los programadores ni lo usan). La otra es dejar tal cual, y que "cada cual se asegure de usarlo bien".

----
Si ahora que he investigado como hacer un lenguaje me estreso, no me imagino lo que sera manejar un lenguaje y años despues, pensar en corregir algun problema.

Cuando se ha hecho (caso reciente: Python 3) los cambios han sido traumáticos.

Aqui hay que quitarse el sombrero con los diseñadores de GO, que desde el principio anticiparon este lio y crearon una herramienta que formatea el código para que se vea consistentem, y de paso auto-convierte la sintaxis y llamadas a librerías para salir de los problemas y de llamadas "deprecated". Y la comunidad entera lo usa de forma rutinaria:

https://golang.org/cmd/gofmt/

Sin este tipo de herramientas, este tipo de mejoras es muy difícil de implementar en la practica.

Incluso, el problema que mencionaron de como Delphi rompe las expectativas en como funcionan los STRING en móviles subraya el lio: A la final, es lo que los diseñadores del lenguaje necesite AHORA, y les salga fácil: Y mirar pa' atras y arreglar correctamente? Eso es de lo mas anomalo en nuestra industria.
__________________
El malabarista.
Responder Con Cita
  #28  
Antiguo 19-09-2016
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
En el debate de Twitter ya se está considerando usar "It". Aunque eso dé pie a todo tipo de referencias jocosas a la película del payaso (o la novela de S.K.) por parte de los detractores del With.

Marcelo: "&" ya tiene otro uso en Object Pascal.

Jhonny: La expresión en la cabecera del With, como cualquier otra expresión de código, no necesariamente es una variable; puede tratarse de una llamada a método que no quisieras hacer más de una vez. Por lo cual se necesita una variable. No creo que sea buena idea permitir declarar variables después del Begin (lo hecho con Except es excepcional).

El With que propongo es para uso moderado. Limitándolo a un sólo elemento (objeto/registro) por cabecera, impidiendo el anidamiento de bloques With y agregando una variable implícita (como la actual Result o el parámetro Self) —propongan nombres para la misma si It o la misma With no gusta—, más una directiva de compilación que permita activar la nueva sintaxis (predeterminadamente inactiva por las siguientes n versiones), al cabo de un tiempo habremos conseguido enmendar la trampa sintáctica que supone y ocurre con el With actual. La compatibilidad hacia atrás es importante, y las directivas temporalmente opcionales hacen de estas transiciones pasajes menos traumáticos. Sin olvidar que estaremos evitando muchos bugs futuros gracias a esto.

Una vez pactada su practicidad teórica, será más eficaz impulsar el cambio en los compiladores y estándares. No dejen de alimentar el debate, ¡hay que corregir al infame With!

Un cordial saludo.

Al González.
Responder Con Cita
  #29  
Antiguo 20-09-2016
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
Jhonny: La expresión en la cabecera del With, como cualquier otra expresión de código, no necesariamente es una variable; puede tratarse de una llamada a método que no quisieras hacer más de una vez. Por lo cual se necesita una variable. No creo que sea buena idea permitir declarar variables después del Begin (lo hecho con Except es excepcional).
Bueno sí, es que he asumido que le paso el resultado del método a dicha variable y con dicha variable es que trabajaría, así no llamo el método varias veces (Como se asumo que la mayoría con un poco de conciencia sobre este asunto ha hecho), además simplemente puedo liberarla sin miedo a que me libere otra cosa distinta si es que ya no la necesito al final.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #30  
Antiguo 20-09-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
En el debate de Twitter ya se está considerando usar "It". Aunque eso dé pie a todo tipo de referencias jocosas a la película del payaso (o la novela de S.K.) por parte de los detractores del With.

Marcelo: "&" ya tiene otro uso en Object Pascal.

Jhonny: La expresión en la cabecera del With, como cualquier otra expresión de código, no necesariamente es una variable; puede tratarse de una llamada a método que no quisieras hacer más de una vez. Por lo cual se necesita una variable. No creo que sea buena idea permitir declarar variables después del Begin (lo hecho con Except es excepcional).

El With que propongo es para uso moderado. Limitándolo a un sólo elemento (objeto/registro) por cabecera, impidiendo el anidamiento de bloques With y agregando una variable implícita (como la actual Result o el parámetro Self) —propongan nombres para la misma si It o la misma With no gusta—, más una directiva de compilación que permita activar la nueva sintaxis (predeterminadamente inactiva por las siguientes n versiones), al cabo de un tiempo habremos conseguido enmendar la trampa sintáctica que supone y ocurre con el With actual. La compatibilidad hacia atrás es importante, y las directivas temporalmente opcionales hacen de estas transiciones pasajes menos traumáticos. Sin olvidar que estaremos evitando muchos bugs futuros gracias a esto.

Una vez pactada su practicidad teórica, será más eficaz impulsar el cambio en los compiladores y estándares. No dejen de alimentar el debate, ¡hay que corregir al infame With!

Un cordial saludo.

Al González.
De los variados caracteres y símbolos posibles, me ha parecido que el más "amigable" con el uso y significado de With era el & ya que éste significa "Y". Como una manera de decir "con tal objeto hacer esto Y esto otro".

Emplear el punto como si fuera el método, me parece que puede dar a confusiones también. Y el uso de dos puntos también ya tiene su usos en el lenguaje.
Si la propuesta pasara por emplear un único caracter identificador entre los tradicionales y de rápido tecleo están @, #, $, %, ^, * y si nos ponemos a ver a todos esos tienen su "uso y significado"
Entonces me dije, ¿Y acaso no usamos la doble comilla cuando escribimos a mano para ahorrarnos escribir lo mismo una y otra vez? ¿Porqué no darle entonces el mismo uso a la pobre chica?

Código Delphi [-]
with Objecto do
begin
  "Propiedad := algo;
  "HacerAlgo();
  // etc...
end;

Es una forma de decir: Idem. Pero sigamos con las palabras ya que los símbolos pueden resultar un tanto faltos de expresión... Miremos a Idem... ¿No es una bella palabra para decir justamente "lo mismo"? ¿O acaso no usan esta expresión en sus escritos?
No me parace una mala idea.

si It la debiéramos de descartar porque resulta graciosa, la otra posibilidad es usar That. Tampoco es que se pierda demasiado en la "traducción". Pero ya tenemos una forma de decirlo sin jugarse demasiado. Idem es una expresión que viene del latín... ¡la conocemos "todos"!

La posible directiva podría ser $IdemInWith ON/OFF o $FlagInWith ON/OFF ya que el uso de la directiva obliga "identificar" o señalar con la palabra That/It/Idem o la que sea elegida que se está por referise al objeto en cuestión.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #31  
Antiguo 20-09-2016
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
Esto se está poniendo bueno.

Jhonny: Comprendo lo que dices, pero no olvidemos que precisamente With te ahorra tener que declarar una variable y asignarle el valor de la expresión.

Estas cosas parecen baladíes para algunos, pero si se cae en la cuenta de que el empleo de recursos elegantes para ahorrar código mejora sensiblemente su comprensión, se concluye también que no permitir al With evolucionar sería como derribar un viejo, útil, pero riesgoso puente (o seguir con él), en lugar de construir un puente más seguro y probablemente más útil.

Marcelo: Es de imaginar que no seamos los únicos que hemos pensado en el símbolo de la doble comilla. Como podrás ver, esa fue mi propuesta de hace dos años: http://rescatandoadelphi.blogspot.mx...lphi-with.html
Y este uno de los debates donde defendí la idea: http://www.delphifeeds.com/go/f/113867

Sin embargo, hoy estoy más convencido de que deberíamos utilizar una palabra y no un símbolo, para no ir en contra de la filosofía del precioso Pascal. Y he de decir que me va atrayendo más la idea de que dicha palabra no sea una palabra reservada, sino un identificador no declarado como los que ya existen en el lenguaje (Self, Result). It me gusta, y ahora que lo mencionaste, me parece que Idem no está del todo mal.

Germán: Espero haber dado a entender que no se trata de cambiar algo de la noche a la mañana, sin pensar en la compatibilidad hacia atrás. Reitero lo de las directivas de transición, que ya en otros casos se han utilizado con mucho éxito.

Por otra parte, les pido que no pierdan de vista la ventaja de poder referirse al objeto "witheado" dentro del propio bloque With. Algo que el With tradicional no tiene.

Saludos veracruzanos lluviosos.

Al González.
Responder Con Cita
  #32  
Antiguo 20-09-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
Esto se está poniendo bueno.

Jhonny: Comprendo lo que dices, pero no olvidemos que precisamente With te ahorra tener que declarar una variable y asignarle el valor de la expresión.

Estas cosas parecen baladíes para algunos, pero si se cae en la cuenta de que el empleo de recursos elegantes para ahorrar código mejora sensiblemente su comprensión, se concluye también que no permitir al With evolucionar sería como derribar un viejo, útil, pero riesgoso puente (o seguir con él), en lugar de construir un puente más seguro y probablemente más útil.

Marcelo: Es de imaginar que no seamos los únicos que hemos pensado en el símbolo de la doble comilla. Como podrás ver, esa fue mi propuesta de hace dos años: http://rescatandoadelphi.blogspot.mx...lphi-with.html
Y este uno de los debates donde defendí la idea: http://www.delphifeeds.com/go/f/113867

Sin embargo, hoy estoy más convencido de que deberíamos utilizar una palabra y no un símbolo, para no ir en contra de la filosofía del precioso Pascal. Y he de decir que me va atrayendo más la idea de que dicha palabra no sea una palabra reservada, sino un identificador no declarado como los que ya existen en el lenguaje (Self, Result). It me gusta, y ahora que lo mencionaste, me parece que Idem no está del todo mal.

Germán: Espero haber dado a entender que no se trata de cambiar algo de la noche a la mañana, sin pensar en la compatibilidad hacia atrás. Reitero lo de las directivas de transición, que ya en otros casos se han utilizado con mucho éxito.

Por otra parte, les pido que no pierdan de vista la ventaja de poder referirse al objeto "witheado" dentro del propio bloque With. Algo que el With tradicional no tiene.

Saludos veracruzanos lluviosos.

Al González.
Sabía que ya recordaba de algún lado esto. Lo que ya se me había olvidado fue tu propuesta de las comillas dobles... ¡Otra vez yo reinventando la rueda che!

Yo también veo más apropiado un identificador y no un símbolo. En lo que si difiero, o al menos, hasta ahora estuve pensando y considerando, es que Idem TIENE que ser palabra reservada. Se me hace que tal palabra sólo tiene sentido dentro de la estructura del with, por lo que ya que ésta es palabra reservada, por transición y uso Idem también debe serlo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #33  
Antiguo 20-09-2016
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
Cita:
Empezado por Delphius Ver Mensaje
[...]Idem TIENE que ser palabra reservada. Se me hace que tal palabra sólo tiene sentido dentro de la estructura del with, por lo que ya que ésta es palabra reservada, por transición y uso Idem también debe serlo.
function es palabra reservada, Result no.
Responder Con Cita
  #34  
Antiguo 20-09-2016
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
Result y Self son pseudovariables

Al, podrías publicar un pequeño fragmento de código, mas o menos "real" (pensando por ej en el uso del absolute en el tweet del otro día) en donde un with es una buena herramienta y no un problema? Me da mucha curiosidad. Quizá mi ingenio aún no sea capaz de encontrar el yang dentro del with

En realidad he decidido que la postura de sacarlo es algo caprichosa. Es mas fácil para mí pensar que no existe y no usarlo, como un montón de gustos que son particulares de cada uno. Si en algún momento me tocase consumir código que está implementado con withs, mientras funcione como se espera que funcione, podre soportarlo

Roman, con lo de Marco Cantu, que fue un ejemplo, simplemente quería decir que quedaría muy feo desde el punto de vista comercial que Embarcadero o un vocero aparezca un día diciendo que algo nuevo que agregaron no es una práctica muy recomendable.
Responder Con Cita
  #35  
Antiguo 20-09-2016
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.278
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
Entiendo que la única utilidad del with dentro del lenguaje es eliminar determinadas "palabras" de forma reiterativa en un bloque de código.
Si resulta que para poder usar el with ahora vamos a introducir la necesidad de usar una nueva palabra, ¿no será mejor no utilizarlo?
Es decir, creo que usar el with (que creo que es lo que proponéis) usando un identificador (it o idem) es lo mismo (o es peor) que usar una variable y declararla del tipo correcto.

Me explico:

Ahora tenemos esto:

Código Delphi [-]
var
  John, Sarah : TCustomer;
begin
  // Set up the John's customer details
  with John do
  begin
    firstName := 'John';
    lastName  := 'Smith';
    address1  := '7 Park Drive';
    address2  := 'Branston';
    address3  := 'Grimworth';
    city      := 'Banmore';
    postCode  := 'BNM 1AB';
  end;

Para solventarlo, proponemos crear una directiva condicional y obligar a escribir esto:

Código Delphi [-]
var
  John, Sarah : TCustomer;
begin
  // Set up the John's customer details
  with John do
  begin
    idem.firstName := 'John';
    idem.lastName  := 'Smith';
    idem.address1  := '7 Park Drive';
    idem.address2  := 'Branston';
    idem.address3  := 'Grimworth';
    idem.city      := 'Banmore';
    idem.postCode  := 'BNM 1AB';
  end;

Creo que en comparación con esto, estamos liando las cosas...
Porque resulta que al final, para poder utilizar el with (cuya ventaja creo que es eliminar determinadas palabra repetitivas), estamos obligando al usuario a escribir más código con otra palabra que se repite (y menos entendible) que si escribiéramos el código natural.

Código Delphi [-]
var
  John, Sarah : TCustomer;
begin
  // Set up the John's customer details
  John.firstName := 'John';
  John.lastName  := 'Smith';
  John.address1  := '7 Park Drive';
  John.address2  := 'Branston';
  John.address3  := 'Grimworth';
  John.city      := 'Banmore';
  John.postCode  := 'BNM 1AB';

O no lo entiendo o no lo veo.

NOTA: El código de ejemplo está extraído de la explicación del WITH de DelphiBasics.
__________________
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
  #36  
Antiguo 20-09-2016
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.278
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
Y que conste que hay ejemplos en los que WITH puede tener sentido (y creo que es para lo que se pensó) como puede ser algo así (donde la parte a eliminar es muy grande):

Código Delphi [-]
  dmClientesMain.objCliente.QueryClientes.FieldByName('ID').AsString := ID;
  dmClientesMain.objCliente.QueryClientes.FieldByName('Nombre').AsInteger := 'Nombre';
  dmClientesMain.objCliente.QueryClientes.FieldByName('Desc').AsString := 'Descripcion';
  dmClientesMain.objCliente.QueryClientes.FieldByName('Telefono').AsString := '123456789';
  ...

Pero es que para estos casos, creo que esto:

Código Delphi [-]
var
  q:TQuery;
begin
  q := dmClientesMain.objCliente.QueryClientes;
  q.FieldByName('ID').AsString := ID;
  q.FieldByName('Nombre').AsInteger := 'Nombre';
  q.FieldByName('Desc').AsString := 'Descripcion';
  q.FieldByName('Telefono').AsString := '123456789';
  ...

Es más claro que esto, ya sea usando it o idem:

Código Delphi [-]
  with dmClientesMain.objCliente.QueryClientes do 
  begin
  it.FieldByName('ID').AsString := ID;
  it.FieldByName('Nombre').AsInteger := 'Nombre';
  it.FieldByName('Desc').AsString := 'Descripcion';
  it.FieldByName('Telefono').AsString := '123456789';
  end;
  ...

Entre otras cosas porque <it> o <idem> me dan un significado "genérico", <q> en este caso, para mi tiene un significado (de query) que además me hace más claro entender el código.
Al igual que si uso frm (para un TForm), f (para un TField), ds (para un TDataSet),...
__________________
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
  #37  
Antiguo 20-09-2016
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
El uso del with, gusto los colores, por que alguno no le guste usar el with o le resulte complicado su uso, no es para eliminarlo, en mis proyectos uso el with en todo y, nunca he tenido ningún problema referente a el, incluso con el debug, eje.
Código Delphi [-]
...
begin
  with TfrmClientes.Create(Self) do
  begin
    ShowModal;
    Free;
  end;
end;
Otro:
Código Delphi [-]
...
var
  frmC: TfrmClientes;
begin
  frmC := TfrmClientes.Create(Self);
  with frmC do
    ShowModal;
  FreeAndNil(frmC);
end;
Otro mas:
Código Delphi [-]
...
begin
  with Edit1, Label1 do
    Text := Caption;
end;
Si no sabes como utilizar el with o te confunde, pues, evita su uso, es una herramienta bastante util al menos para mí, no veo que se deba suprimir, si lo que se pretende es evolucionar su sintaxis, estoy totalmente de acuerdo, añadir with as ?? y el ?? sea el objeto, perfecto, pero de ahí a quitarlo, no veo ningún avance sino un perjuicio, si hacemos lo mismo con este último ej. seria asi.
Código Delphi [-]
...
begin
  with Edit1 as E1, Label1 as L1 do
  begin
    E1.Font.Color := clBlue;
    L1.Font.Color := clRed;
    E1.Text := L1.Caption;
  end;
end;
En este caso puedo hacer dentro del mismo with as ??, poner el color en ambos objetos, sin el uso de with as ??, sólo seria para el Label1, ya que es el último objeto que ha entrado en el with y, como ambos tienen el Font, la prioridad es del Label1.
Código Delphi [-]
...
begin
  with Edit1, Label1 do
  begin
    Font.Color := clRed;
    Text := Caption;
  end;
end;
de lo contrario tendria que hacer dos with, eje.
Código Delphi [-]
...
begin
  with Edit1 do
  begin
    Font.Color := clBlue;
    with Label1 do
    begin
      Font.Color := clRed;
      Text := Caption;
    end;
  end;
end;
Que esto es confuso, según para quién, el que esta acostumbrado a utilizarlo, no veo ninguna confusión en el.

Si el with as ?? evoluciona de esta manera, perfecto, pero que no sea obligatorio usar el with as ?? y que se pueda utilizar como uno quiera, with sólo o con with as ??.

Un saludo.

p.d.: Espero haber contribuido a la no expulsión del with y si a su evolución.
__________________
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
  #38  
Antiguo 20-09-2016
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
Que esto es confuso, según para quién, el que esta acostumbrado a utilizarlo, no veo ninguna confusión en el.
Confuso es, aunque sepamos cómo funciona y qué hace. Pero si alguien viene de otro lenguaje y ve eso, lo encontrará confuso, porque es confuso.
Es como el idioma chino, es confuso, aunque los chinos dirán que lo entienden, pero confuso es.
Responder Con Cita
  #39  
Antiguo 20-09-2016
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
Esto se está poniendo espeso.

En el foro de Lazarus no se está discutiendo mucho, aunque sí hay algunos apuntes interesantes. Lo traduciría pero, creedme, mi capacidad de concentración está hoy bajo mínimos.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #40  
Antiguo 20-09-2016
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
Pero si alguien viene de otro lenguaje y ve eso, lo encontrará confuso, porque es confuso.
Como VB, C#, C++, java, Python, todos utilizan el with de una forma mejor definida en su sintaxis, porque conoce el lenguaje, el mio es delphi.

Cualquier lenguaje de programación utiliza atajos como el with e incluso SQL Server, Oracle se utiliza with

Por que se deveria de quitar el with en delphi?, en base de datos como las que he nombrado, ¿por que las utilizan?, porque son utiles.

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
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
Analogías entre C++ y Object Pascal noob C++ Builder 3 16-02-2009 18:19:54
como usar object pascal y gtk Lionheart OOP 6 09-12-2005 19:31:08
manual de excepciones de object pascal para free pascal??? Garion OOP 3 27-05-2005 00:42:29
¿Object Pascal para todo? ReigDidion OOP 10 12-02-2004 08:28:07


La franja horaria es GMT +2. Ahora son las 08:29:48.


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