Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Consejo de amigo: No uses el with. Te aviso ahora con tiempo antes de que vayas por la mitad de tu aplicacion
Responder Con Cita
  #2  
Antiguo 21-10-2015
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.242
Poder: 22
ElKurgan Va camino a la fama
Creo que el problema del escenario 1 se explica por si mismo:

Código Delphi [-]
with TForm2.Create(Self) do
  try
    showModal;
  finally
    Free;
end;

Aquí etás creando un objeto de la clase TForm2, pero ¿Es la variable Form2? Yo creo que no, sino que es una creada al vuelo por Delphi.

En los otros escenarios no te da porque al ser formularios "Autocreate"... ¡¡¡ La variable Form2 se está creando al vuelo !!!

Asi debería funcionar:

Código Delphi [-]
If not Assigned(Form2) then
  Form2 := TForm2.Create(Self);
try
  Form2.showModal;
finally
    Form2.Free;
end;

Saludos
Responder Con Cita
  #3  
Antiguo 21-10-2015
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 688
Poder: 21
olbeup Va camino a la fama
Como dice, ElKurgan

El error es porque estas creando la clase TFrom2 y TFrom3 pero no el objecto de la variable que es Form2 o Form3.

Estas creando en memoria la clase de TFrom2 o TFrom3 pero el nombre del objecto no es Form2 o Form3, es uno que delphi le ha dado por defecto, como por ejemplo, Form2_1 o Form3_1, pero estos objectos que ha creado delphi no lo puedes utilizar porque no existen, sólo es interno del TFrom2 o TFrom3 al crear su clase.

Yo utilizo mucho, pero mucho los with, pero si estas empezando con el with tienes que entender su funcionamento, si no sabe como es su comportamiento, te recomiendo que lo utilices poco a poco, amenos que sepas como funciona.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 21-10-2015 a las 08:48:21.
Responder Con Cita
  #4  
Antiguo 23-10-2015
theheriko theheriko is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 9
Poder: 0
theheriko Va por buen camino
Cita:
Empezado por olbeup Ver Mensaje
Como dice, ElKurgan

El error es porque estas creando la clase TFrom2 y TFrom3 pero no el objecto de la variable que es Form2 o Form3.

Estas creando en memoria la clase de TFrom2 o TFrom3 pero el nombre del objecto no es Form2 o Form3, es uno que delphi le ha dado por defecto, como por ejemplo, Form2_1 o Form3_1, pero estos objectos que ha creado delphi no lo puedes utilizar porque no existen, sólo es interno del TFrom2 o TFrom3 al crear su clase.

Yo utilizo mucho, pero mucho los with, pero si estas empezando con el with tienes que entender su funcionamento, si no sabe como es su comportamiento, te recomiendo que lo utilices poco a poco, amenos que sepas como funciona.

Un saludo.
Nuestro amigo ElKurgan, lo dijo con código y tú con palabras y también te agradezco por el tiempo. Ahora lo entiendo.

Respecto a los with, no leí documentación al respecto. Pero deduje que se usa para simplificar, ya me documentaré más,
Muchas gracias.
Responder Con Cita
  #5  
Antiguo 23-10-2015
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.242
Poder: 22
ElKurgan Va camino a la fama
Efectivamente, el with es muy utilizado para simplificar. Pero hay que tener cuidado con su uso.

Por ejemplo, si sabes que una porción de código no es propensa a fallos lo puedes usar sin problemas. Pero como tengas que depurar ese trozo para ver lo que está pasando, la ayuda del depurador no sabe resolver las variables que están dentro de dicho with.

Aunque hay trucos para que funcione, es mejor no usarlo cuando no tengas las cosas muy claras

Saludos
Responder Con Cita
  #6  
Antiguo 23-10-2015
theheriko theheriko is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 9
Poder: 0
theheriko Va por buen camino
Cita:
Empezado por ElKurgan Ver Mensaje
Efectivamente, el with es muy utilizado para simplificar. Pero hay que tener cuidado con su uso.

Por ejemplo, si sabes que una porción de código no es propensa a fallos lo puedes usar sin problemas. Pero como tengas que depurar ese trozo para ver lo que está pasando, la ayuda del depurador no sabe resolver las variables que están dentro de dicho with.

Aunque hay trucos para que funcione, es mejor no usarlo cuando no tengas las cosas muy claras

Saludos
A veces me lanza errores, y no muestra el lugar específico. Se me complica un poquito encontrando el porque, no se si sea por ello, para que correr riesgos. Además si me lo recomienda un veterano, pues claro que lo hago.

Gracias ElKurgan!
Responder Con Cita
  #7  
Antiguo 23-10-2015
theheriko theheriko is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 9
Poder: 0
theheriko Va por buen camino
Cita:
Empezado por ElKurgan Ver Mensaje

Asi debería funcionar:

Código Delphi [-]
If not Assigned(Form2) then
  Form2 := TForm2.Create(Self);
try
  Form2.showModal;
finally
    Form2.Free;
end;

Saludos


Si lo explicas de esa forma tan clara, es cómo para no olvidarlo nunca jamas. Si leí en otros post del foro hablaban de hacer referencia a variables que no existen. Se que me falta mucho por leer y tengo tanto que aprender.
Muchas gracias, no sabes cuanto te lo agradezco.
Gracias por tu tiempo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Diferencia de crear formularios con Create(self) y con Application.CreateForm Lizette Varios 4 30-03-2009 08:46:44
DataModule.Create Error Enan0 Varios 4 23-09-2008 15:13:16
error en create function lookmydoom MySQL 0 12-01-2007 04:20:59
Cargar formularios en un TPanel PTW Varios 2 24-05-2005 13:08:21
error en el create table xerkan Firebird e Interbase 3 07-10-2003 15:43:24


La franja horaria es GMT +2. Ahora son las 14:48:37.


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