Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Leer informacion de un objeto creado (https://www.clubdelphi.com/foros/showthread.php?t=82743)

edorantes 09-04-2013 02:05:41

Leer informacion de un objeto creado
 
Hola amigos estoy creando un objeto para guardar los datos de un usuario pero lo que no se es como leerlos es decir una vez que los guarde ¿Como los extraigo? me dicen que tengo que hacer un metodo para leerlo pero no se como aqui mi codigo de guardado

Código Delphi [-]
procedure Tusuarios.add (id : Integer; nombre : String;supConDer : Currency ; supSinDer:Currency; cultivo:String);
begin
    idU[ap] := id;
    nombreU.Add(nombre);
    supCder[ap] := supConDer;
    supSder[ap] := supSinDer;
    cultivoU.Add(cultivo);

end;
Lo que no se como hacer es el metodo para mostrar la informacion espero me puedan ayudar

ecfisa 09-04-2013 02:35:58

Hola edorantes.

Das muy poca información para darte una respuesta concreta.

Habría que ver la declaracion de Tusuarios y también los tipos y entornos de idU, nombreU, supCder, supSder, cultivoU y el índice ap.

Cuando indicas que necesitas leerlos, a que te refieres ¿ A mostrarlos ?, ¿ A devolver el objeto indicado ?.
Que tipo de valor utilizará el método para buscar el objeto ¿El identificador, de tipo entero, o el nombre de tipo string ?, ¿?, ...

Saludos.:)

edorantes 09-04-2013 17:05:38

Este es el codigo de mi unidad
Código Delphi [-]
unit uUsuarios;

interface

uses classes, Types, SysUtils;

type

 //Aqui defino mis propios tipos de variables
 TIntArray = array[0..200] of shortint;
 TSingleArray = array[0..200] of currency;

  Tusuarios = class(TObject)
   Constructor Create;

  private
   idU,cuentaU,subcU  :  TIntArray;
   supCder, supSder :  TSingleArray;
   nombreU, cultivoU    :  TStrings;
   ap : shortint;  {Apuntador, lleva el numero de recibos en el cobro actual}
  public

    procedure inicializa();

    procedure add(id : Integer; nombre : String;
  supConDer : Currency ; supSinDer:Currency; cultivo:String) ;



  end;

implementation

constructor Tusuarios.create;
begin
  nombreU := Tstringlist.create;
  cultivoU := Tstringlist.create;


end;

procedure Tusuarios.inicializa;
begin
  ap := 0; //inicializamos ap que es el apuntador

end;

procedure Tusuarios.add (id : Integer; nombre : String;supConDer : Currency ; supSinDer:Currency; cultivo:String);]//Aqui guardo //los datos de el usuario
begin
    idU[ap] := id;
    nombreU.Add(nombre);
    supCder[ap] := supConDer;
    supSder[ap] := supSinDer;
    cultivoU.Add(cultivo);

end;

   procedure Tusuarios.get  (indice : Shortint);// Este seria el de mostrar los datos guardados anteriores el cual  no se como hacerlo
begin
    

end;

end.
Bueno en mi ojeto guardo la informacion de los usuarios pero no se como hacer el de mostrar

ecfisa 09-04-2013 17:53:24

Hola.

A grandes rasgos, como para darte una idea, primero tendrías que incrementar el índice ap en el método add:
Código Delphi [-]
procedure Tusuarios.add(id: Integer; nombre: string; supConDer,
  supSinDer: Currency; cultivo: string);
begin
  idU[ap]:= id;
  nombreU.Add(nombre);
  supCder[ap] := supConDer;
  supSder[ap] := supSinDer;
  cultivoU.Add(cultivo);
  Inc(ap);  // <- Aquí
end;

Y un ejemplo para mostrar el contenido:
Código Delphi [-]
procedure Tusuarios.Show(Indice: Integer);
begin
  if (Indice < 0)or(Indice > ap-1) then
     raise Exception.Create('Indice fuera de rango');
  ShowMessage(Format('%d %s %f %f %s',
   [idU[Indice],nombreU[Indice],supCder[Indice],supSder[Indice],CultivoU[Indice]]))
end;

Saludos.

edorantes 09-04-2013 20:59:00

Bueno amigo hay te va lo que tengo que hacer, lo que pasa es que desde mi clase no puedo usar nada visual lo que tengo que hacer es que una vez que guarde la informacion de los usuarios, despues la pueda visualizar en una tabla desde mi form pricipal
Ejemplo
Código Delphi [-]
var
 InformacionU : Tusuarios;

InformacionU.Create;
InformacionU.add(idU,nombreU,GsupCder,ed_superficie.Value,
         cbox_clave.Items.Text);// Aqui meto la cantidad que quiera de informacion accediendo a mi objeto NOTA enstoy en mi Form NO en mi clase


//Lo que quiero es que desde aqui pueda y sacar la informacion necesaria solo enviandole el numero de apuntador 
y agregarlo a una tabla o listview yo primero lo hacia mostrando directamente los datos en la tabla
asi

with ListView.Items.Add do
begin
   Caption:= '1';
   SubItems.Add( '35' );
   SubItems.Add( 'Eduardo' );
end;
 
pero me dijeron que no que me creara un objeto y mediante eso muestre elmine y agregue


//como viste he tratado de hacerlo el de agregar que es ADD me falta el de mostrar y eliminar si ves que tengo errores ayudame
//Espero me hayas entendido

edorantes 09-04-2013 21:04:11

Bueno amigo hay te va lo que tengo que hacer,
lo que pasa es que desde mi clase no puedo usar nada visual
lo que tengo que hacer es que una vez que guarde la informacion de los usuarios, despues la pueda visualizar en una tabla desde mi form pricipal
Ejemplo
Código Delphi [-]
var
 InformacionU : Tusuarios;

InformacionU.Create;
InformacionU.add(idU,nombreU,GsupCder,ed_superficie.Value,
         cbox_clave.Items.Text);// Aqui meto la cantidad que quiera de informacion accediendo a mi objeto NOTA enstoy en mi Form NO en mi clase


//Lo que quiero es que desde aqui pueda y sacar la informacion necesaria solo enviandole el numero de apuntador y agregarlo a una tabla o listview 
yo primero lo hacia mostrando directamente los datos en la tabla pero me dijeron que no que me creara un objeto y mediante eso muestre elmine y agregue
//como viste he tratado de hacerlo el de agregar que es ADD me falta el de mostrar y eliminar si ves que tengo errores ayudame
//Espero me hayas entendido

edorantes 10-04-2013 01:43:56

No se que paso con las respuestas aneriores, a grandes rasgos quisiera saber como se hace algo asi que ponga un boton y obtenga los datos pero no se como quedaria mi clase, aqui un ejemplo
Código Delphi [-]
procedure TFormMain.btn_cobroClick(Sender: TObject);
begin
 
//ASi es como quisiera que quedara pero aun no se como
 showmessage(Tusuarios.Show(0).getNombre);// Aqui si quisiera mostrar solo el nombre
O tambien
showmessage(IntToString(Tusuarios.Show(0).getCuenta)+Tusuarios.Show(0).getNombre);// Aqui si quisiera mostrar cuenta y Nombre
 
end;

ecfisa 10-04-2013 06:46:08

Hola edorantes.
Cita:

Empezado por edorantes (Mensaje 458329)
No se que paso con las respuestas aneriores, a grandes rasgos...

Lo que sucede es que lamentablemente no podemos permanecer conectados a Club Delphi todo lo que nos gustaria...

Cita:

Empezado por edorantes (Mensaje 458329)
lo que pasa es que desde mi clase no puedo usar nada visual lo que tengo que hacer es que una vez que guarde la informacion de los usuarios, despues la pueda visualizar en una tabla desde mi form pricipal

Te soy sincero, no entiendo la lógica de tu código. Pero te pongo una de las formas en que lo haría, espero que te sirva para sacar alguna idea.

Por lo que comentas arriba ("no puedo usar nada visual"), supongo que tenes que realizarlo en modo consola:
Código Delphi [-]
program Project2; {$APPTYPE CONSOLE}

uses SysUtils;

type
  TUsuarios = class(TObject)
  private
    Fid                : Integer;
    FSupCder, FsupSder : Currency;
    FNombre, FCultivo  : string;
    FVUsuarios         : array of TUsuarios;
  public
    property Nombre: string read FNombre write FNombre;
    property Cultivo: string read FCultivo write FCultivo;
    property SupCDer: Currency read FSupCDer write FSupCDer;
    property SupSDer: Currency read FSupSDer write FSupSDer;
    constructor Create;
    procedure Add(const aID: Integer; const aNombre,aCultivo : string;
      const aSupConDer, aSupSinDer: Currency);
    function GetUser(const id: Integer): TUsuarios;
    destructor Destroy; override;
  end;

// Crear
constructor TUsuarios.Create;
begin
  inherited;
  FVusuarios := nil
end;

// Añadir usuarios
procedure TUsuarios.Add(const aID: Integer; const aNombre,aCultivo : string;
  const aSupConDer, aSupSinDer: Currency);
begin
  SetLength(FVUsuarios, Length(FVUsuarios)+1);
  FVUsuarios[High(FVUsuarios)] := TUsuarios.Create;
  with FVUsuarios[High(FVUsuarios)] do
  begin
    Fid     := aID;
    FNombre := aNombre;
    FCultivo:= aCultivo;
    FSupCder:= aSupConDer;
    FsupSder:= aSupSinDer;
  end;
end;

// Obtener usuario a partir del ID
function TUsuarios.GetUser(const aID: Integer): TUsuarios;
var
  i: Integer;
begin
  Result := nil;
  for i:= High(FVUsuarios) downto Low(FVUsuarios) do
    if aID = FVUsuarios[i].Fid then
     Result := FVUsuarios[i]
end;

// Liberar memoria
destructor TUsuarios.Destroy;
var
  i: Integer;
begin
  for i := High(FVUsuarios) downto Low(FVUsuarios) do
    FVUsuarios[i].Free;
  FVUsuarios := nil;
  inherited
end;

(* Ejemplo del uso *)
var
  U,R: TUsuarios;
begin
  U := TUsuarios.Create;
  try
    U.Add(1,'Juan','trigo',2,3);
    U.Add(2,'Andrea','soja',5.25,3.12);
    U.Add(3,'Maria','cebada',12.13,1.83);
    R := U.GetUser(2);
    if Assigned(R) then
    begin
      Writeln('Nombre : ',R.Nombre);
      Writeln('Cultivo: ',R.Cultivo);
      Writeln('SupCDer:',R.SupCDer:8:2);
      Writeln('SupSDer:',R.SupSDer:8:2);
    end;
  finally
    U.Free;
  end;
  readln;
end.

Saludos.


La franja horaria es GMT +2. Ahora son las 02:07:49.

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