Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-09-2004
bumiga bumiga is offline
Miembro
 
Registrado: sep 2004
Posts: 28
Poder: 0
bumiga Va por buen camino
Uses en Interface e Implementation

Amigos, buenas tardes, mi pregunta es: Cual es la diferencia de usar por ejemplo "SysUtils", declarada en el Uses de la parte Interface o en el Uses de la parte Implementation.

De antemano agradezco las respuesta que me puedan dar.
Responder Con Cita
  #2  
Antiguo 08-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.138
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Para lo que concierne a la unidad donde esté declarada no hay diferencia como no sea la obvia de no poder usar elementos de la otra unidad antes de su inclusión.

La utilidad radica en que las unidades no pueden referirse circularmente una a la otra en la sección interface; por lo menos una de ellas debe poner la referencia en la sección implementation.

La verdad es que si bien tengo una vaga idea de por qué esto es así no lo sé cabalmente. Me parece que tiene que ver con el hecho de que en Delphi el compilador es de "un sólo paso", es decir, sólo recorre el código una vez para compilarlo. Admitir referencias circulares me parece que obligaría al compilador a dar dos vueltas como mínimo. Según alguna vez leí esto es lo que hace la gran diferencia en tiempo de compilación entre Delphi y, por ejemplo, C.

Sin embargo me encantaría que alguien más versado diera luz sobre el asunto.

// Saludos
Responder Con Cita
  #3  
Antiguo 30-07-2012
passmaker passmaker is offline
Miembro
 
Registrado: mar 2010
Posts: 10
Poder: 0
passmaker Va por buen camino
Tarde pero seguro, explicacion muy sencilla del Sr. Marcus Cantu
" La cláusula uses, al principio de la sección de interfaz, indica a qué otras unidades tenemos que acceder en la porción de interfaz de la unidad. Esto incluye las unidades que definen los tipos de datos a que nos referimos en la definición de otros tipos de datos, como las componentes dentro de un formulario que estemos definiendo. La segunda cláusula uses, al principio de la sección de implementación, indica otras unidades, a que necesitamos acceder sólo en el código de implementación. Cuando necesite referirse a otras unidades del código de las rutinas y métodos, deberá añadir elementos en esta segunda cláusula uses, en vez de hacerlo en la primera. Todas las unidades a que se refiera deben estar presentes en el directorio del proyecto o un directorio de la ruta de búsqueda (puede establecer la ruta de búsqueda de un proyecto en la página Directories/Conditionals del cuadro de diálogo Options del proyecto)."

Dejo enlace:
http://www.marcocantu.com/epascal/Spanish/ch11unit.htm


Cita:
Empezado por roman Ver Mensaje
Para lo que concierne a la unidad donde esté declarada no hay diferencia como no sea la obvia de no poder usar elementos de la otra unidad antes de su inclusión.

La utilidad radica en que las unidades no pueden referirse circularmente una a la otra en la sección interface; por lo menos una de ellas debe poner la referencia en la sección implementation.

La verdad es que si bien tengo una vaga idea de por qué esto es así no lo sé cabalmente. Me parece que tiene que ver con el hecho de que en Delphi el compilador es de "un sólo paso", es decir, sólo recorre el código una vez para compilarlo. Admitir referencias circulares me parece que obligaría al compilador a dar dos vueltas como mínimo. Según alguna vez leí esto es lo que hace la gran diferencia en tiempo de compilación entre Delphi y, por ejemplo, C.

Sin embargo me encantaría que alguien más versado diera luz sobre el asunto.

// Saludos
Responder Con Cita
  #4  
Antiguo 31-07-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.824
Poder: 27
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 behold
Hola.
Cita:
La utilidad radica en que las unidades no pueden referirse circularmente una a la otra en la sección interface; por lo menos una de ellas debe poner la referencia en la sección implementation.
Eso es así desde Turbo Pascal, aunque nunca conocí el motivo.


Estuve investigando el por qué de la limitante sin resultado. No obstante, me parece muy razonable la explicación de roman:
Cita:
Me parece que tiene que ver con el hecho de que en Delphi el compilador es de "un sólo paso", es decir, sólo recorre el código una vez para compilarlo. Admitir referencias circulares me parece que obligaría al compilador a dar dos vueltas como mínimo. Según alguna vez leí esto es lo que hace la gran diferencia en tiempo de compilación entre Delphi y, por ejemplo, C.
Así que con esa me quedo hasta que se demuestre lo contrario...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 31-07-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.138
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Y es que lo que comenta Marco Cantú realmente se refiere al buen uso de las cláusulas uses, mas no da una explicación de porqué es así.

// Saludos
Responder Con Cita
  #6  
Antiguo 31-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 27.576
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Algunas veces me he puesto a investigar eso y siempre lo he dejado sin averiguar nada. Quedará como una leyenda para la historia.
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


La franja horaria es GMT +2. Ahora son las 14:18:05.


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