Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-08-2008
R0M3R0 R0M3R0 is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
R0M3R0 Va por buen camino
Question Almacenando datos en una variable de otra unidad

miren Tengo estas dos unidades

Código Delphi [-]
unit Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables,Unit2;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
usuario:TUsuario;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
usuario.poner(Edit1.Text);
end;
end.



y esta


Código Delphi [-]
unit Unit2;
interface
uses
Classes,Dialogs;
type
TUsuario=class
private
cuenta:String;
public
procedure Poner(cuenta_:string);
end;
implementation
procedure Tusuario.Poner(cuenta_ : string);
begin
cuenta:=cuenta_;
ShowMessage(cuenta);
end;
End.



Por QUE no puedo almacenar desde unit11 a unit2 en la variable cuenta
por favor corrijanme por que no puedo almacenar en CUENTA
Responder Con Cita
  #2  
Antiguo 19-08-2008
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
"cuenta" es una variable privada. Para poder acceder debería ser pública o existir una propiedad pública asociada a ella.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 19-08-2008
R0M3R0 R0M3R0 is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
R0M3R0 Va por buen camino
Red face Almacenando datos en variables de otra unidad

Esa solucion tb ya la habia intentando
pero como veras Poner es un procedimiento de TUsuario entonces este procedimiento que es publico deberia permitir acceder a variables incluso PRIVADAS como cuenta

Pdta.Estoy usando delphi 2007
Responder Con Cita
  #4  
Antiguo 19-08-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Dices que no puedes acceder a la variable "cuenta", lo que es lógico, por ser privada, pero, dices también que no puedes cambiar su valor (supongo que dices esto) desde el método público que preparaste para tal fin. Ahora bien, ¿qué error obtienes? Sería importante que lo refieras aquí.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 20-08-2008
R0M3R0 R0M3R0 is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
R0M3R0 Va por buen camino
almacenando datos en variables de otra unidad

me sale error de escritura y una direccion de memoria
Responder Con Cita
  #6  
Antiguo 20-08-2008
R0M3R0 R0M3R0 is offline
Miembro
 
Registrado: oct 2007
Posts: 21
Poder: 0
R0M3R0 Va por buen camino
compilando primer mensaje

SI compilan el codigo de las 2 primeras unidades se daran cuenta a que error me refiero
Responder Con Cita
  #7  
Antiguo 20-08-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
SI compilan el codigo de las 2 primeras unidades se daran cuenta a que error me refiero
Claro. Pero, si lo copias tú aquí exactamente, nos ahorramos tener que hacer lo que dices. Es más sencillo que tú copies el texto íntegro del error aquí, a que todos nosotros tengamos que compilar el código para averiguar por nuestra propia cuenta de qué error se trata. ¿No te parece?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 20-08-2008
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
Tal como dice dec, lo correcto es que pongas tú el mensaje de error en lugar de que nosotors andemos adivinándolo.

Pero bueno, con mi ojo compilador te diré que falta la construcción del objeto Usuario. No puedes simplemente declarar una variable objeto y utilizarla, debes primero construirla.

// Saludos
Responder Con Cita
  #9  
Antiguo 20-08-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Román
No puedes simplemente declarar una variable objeto y utilizarla, debes primero construirla.
A no ser que se tratara de una clase "estática". Pero, en todo caso, puede que los tiros vayan por donde dices Román.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #10  
Antiguo 20-08-2008
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 dec Ver Mensaje
A no ser que se tratara de una clase "estática".
Tienes razón, delphi ya soporta eso ¿verdad? Pero, en todo caso tendría que declararse como tal ¿no?

// Saludos
Responder Con Cita
  #11  
Antiguo 20-08-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí; y además no estoy seguro de si una clase "estática", que es aquella que tiene al menos un método "estático" o "de clase", puede contar con miembros tal que variables... porque no me queda claro de qué modo se inicializarían. En PHP es posible contar con variables estáticas en clases estáticas, pero, si te digo la verdad tampoco me queda muy claro su inicialización...

Pero, vamos, que sí, que yo he salido un poco por los cerros de Úbeda, y que la clase que nos muestra el compañero no parece estática, así que no aplicaría lo que yo digo, sino es tomando por el extremo lo que tú has dicho. Y no es plan.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #12  
Antiguo 21-08-2008
HySTD HySTD is offline
Miembro
 
Registrado: sep 2006
Posts: 15
Poder: 0
HySTD Va por buen camino
Efectivamente, la respuesta que te dieron es correcta! Debes llamar al constructor. Si no implementas uno nuevo, llamará al de la superclase. Por tanto el código quedaría algo así:

Cita:
unit Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables,Unit2;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
usuario:TUsuario;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
usuario:=TUsuario.Create;
usuario.poner(Edit1.Text);
end;
end.
Del mismo modo, el error se produjo al llamar a un objeto de la clase (un TEdit), sin haber creado una instancia de TUsuario. Si hubieras puesto una cadena constante, habría "colado":

Cita:
unit Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables,Unit2;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
usuario:TUsuario;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
usuario.poner('hola');
end;
end.
Un saludo.
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
Alamcenar Result de storedProc desde otra unidad R0M3R0 Conexión con bases de datos 3 22-08-2008 01:32:52
Controlar cuando se ha pulsado un botón en otra unidad (propiedades) David OOP 9 17-11-2007 21:08:45
Almacenando archivos a la BD ? Nathan MySQL 1 03-06-2006 03:38:18
Acceder a un DataSet desde otra unidad SMTZ .NET 5 24-12-2005 09:01:47
Acceder a un DataSet (.NET) desde otra Unidad SMTZ .NET 9 22-10-2005 17:10:40


La franja horaria es GMT +2. Ahora son las 19:12:33.


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