Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   propiedades ¿READ, WRITE? (https://www.clubdelphi.com/foros/showthread.php?t=29067)

jam888 11-01-2006 17:52:38

propiedades ¿READ, WRITE?
 
Que tal gente de foro, de nuevo por aca, esto no es una duda, es un problema, necesito saber como funcinan las propiedades read y write, he chequeado el foro y encontre mucho pero no entendi poco, si alguien pudiera mostrarme con un pequeñisimo ejemplo y explicarme un poco de que se trata , como funciona y donde se define? le agradeceria un monton, espero me puedan responder, gracias y un abrazo.

dec 11-01-2006 18:08:03

Hola,

No sé si deberías ser un poco más específico. Te refieres a las "propiedades read y write", pero, ¿propiedades de qué objeto? ¿de qué componente estamos hablando, si es que hablamos de algún componente? :)

Ricardojosep 11-01-2006 19:00:28

Aqui va algo de Read y Write...
 
Hola Jam888

Como Dec tiene razon, no se sabe de que Read y Write estas hablando, yo te paso un Ejemplo de una de las aplicaciones que le puedes dar.

Ejemplo:
Código Delphi [-]
var

  F1, F2: TextFile;
  Ch: Char;
begin
  if OpenDialog1.Execute then begin
    AssignFile(F1, OpenDialog1.Filename);
    Reset(F1);
    if SaveDialog1.Execute then begin
      AssignFile(F2, SaveDialog1.Filename);
      Rewrite(F2);
      while not Eof(F1) do
      begin
        Read(F1, Ch);
        Write(F2, Ch);
      end;
      CloseFile(F2);
    end;
    CloseFile(F1);
  end;

end;

Para obtener este ejemplo solo puse la palabra Read en delphi y presione F1.
Esto es para la lectura de un archivo de texto. A Read y Write tambien lo puedes usar en una aplicacion de consola.

Te paso el Ejemplo que muestra Delphi:

Ejemplo
Código Delphi [-]
var

   s : string;
 begin
   Write('Enter a line of text: ');
   Readln(s);
   Writeln('You typed: ',s);
   Writeln('Hit  to exit');
   Readln;

 end;

Como ves aqui Write imprime una oracion (Enter a line of Text) en la Consola y ReadLn(S) Es la oracion que el Usuario Ingresa. WriteLn('You tuped: ',S) solo muestra en la Consola:

You typed: "La oracion que puso el Usuario"

Bueno, el resto es algo parecido,

Espero que te sirva.

Hasta pronto.

jam888 11-01-2006 19:12:52

Perdon read y write al definir componentes
 
Perdon es a la hora de definir un componente y asignarles propiedades de
getcarga y setcarga, para cargar valores y leerlos.

delphi.com.ar 11-01-2006 19:13:25

Cita:

Empezado por Ricardojosep
Como Dec tiene razon, no se sabe de que Read y Write estas hablando, yo te paso un Ejemplo de una de las aplicaciones que le puedes dar.

Dentro de la ambigüedad de suposiciones, yo descartaría tu ejemplo, pues "aparentemente" habla de propiedades :D

¿Te referís a genéricamente propiedades de lectura/escritura?... ¿Como definirlas?...

jam888 11-01-2006 19:16:23

Eso, eso , eso
 
Propiedades de lectura escritura, como las defino, como las uso, si puede ser el mas chico de los ejemplos, se los agradeceria un monton.

delphi.com.ar 11-01-2006 19:44:20

Código Delphi [-]
type
  TClase = class(TClasePadre)
  private
    procedure MetodoEscritura(const Value: TTipoDeDatos);
    function MetodoLectura: TTipoDeDatos;
  protected
  public
  published
    property Propiedad: TTipoDeDatos read MetodoLectura write MetodoEscritura;
  end;
Bueno ahí tienes básicamente el la sintaxis de la declaración de una propiedad Lectura/Escritura. Si no defines un método de escritura la propiedad es de solo lectura, si no defines el método de lectura, la propiedad es de solo escritura.
Los métodos de lectura, por convención suelen nombrarse como Get+"Nombre de Propiedad", los métodos de escritura con Set. Si tu propiedad puede ser leída directamente de una variable sin ejecutar código, el típico caso:
Código Delphi [-]
function GetPropiedad: TTipoDato;
begin
  Result := FPropiedad;
end;
Puedes definir directamente una variable en el lugar del método de escritura o lectura según corresponda.

Código Delphi [-]
  TCuadrado = class(TObject)
  private
    FAncho: Integer;
    FAlto: Integer;
    function GetSuperficie: Integer;
    procedure SetAlto(const Value: Integer);
    procedure SetAncho(const Value: Integer);
  published
    property Alto: Integer read FAlto write SetAlto;
    property Ancho: Integer read FAncho write SetAncho;
    property Superficie: Integer read GetSuperficie;
  end;

implementation

{ TCuadrado }

function TCuadrado.GetSuperficie: Integer;
begin
  Result := FAlto * FAncho;
end;

procedure TCuadrado.SetAlto(const Value: Integer);
begin
  if Value <> 0 then
    FAlto := Value;
end;

procedure TCuadrado.SetAncho(const Value: Integer);
begin
  if Value <> 0 then
    FAncho := Value;
end;

Saludos!

jam888 11-01-2006 19:57:20

Ok ya lo entendi
 
Ya entendi el tema ahora lo aplicare y ante cualquier duda nos estaremos viendo, muchas gracias y un abrazo.

dec 11-01-2006 20:03:12

Hola,

Yo creo que podrías repasar algún que otro texto al respecto, y fijarte en cuantos componentes consideres oporturno. En todo caso hay va un ejemplo muy sencillo de un componente con un par de propiedades... qué sé yo... me he puesto a escribir algo y me ha salido lo siguiente. No tiene utilidad ninguna más allá de lo que se deje entrever. Insisto en lo primero que he dicho. ;)

Código Delphi [-]
unit UAmigo;

interface

uses
  Classes;

type
  // Sexo de nuestro amigo
  TSexo = (hombre, mujer);

  // Una clase a modo de ejemplo
  TAmigo = class(TComponent)
  //
  private
    FSexo: TSexo;         // Sexo de nuestro amigo
    FNombre: string;      // Nombre de nuestro amigo
    FApellidos: string;   // Apellidos de nuestro amigo
    FTratamiento: string; // Tratamiento para nuestro amigo

    // Variable puñetera
    FNivelAmistad: integer;

    { Establecerá el sexo y algo más...
    }
    procedure SetSexo(value: TSexo);

  public
    constructor Create(AOwner: TComponent); override; // Constructor del componente

  public
    // Nombre es una propiedad pública
    property Nombre: string read FNombre write FNombre;
    // Apellidos es una propiedad pública
    property Apellidos: string read FApellidos write FApellidos;
    // Sexo es una propiedad pública
    property Sexo: TSexo read FSexo write SetSexo default hombre;
    // NivelAmistad es una propiedad pública de solo lectura
    property NivelAmistad: integer read FNivelAmistad default 5;
  end;

implementation

{ TAmigo }

{ Utilizamos este procedimiento en lugar de
  asignar el valor directamente a FSexo, porque
  de este modo aprovechamos para dar un valor
  en consonancia a la variable privada
  FTratamiento.
}
constructor TAmigo.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  // Inicializamos
  FSexo := hombre;
  FNivelAmistad := 5;
end;

procedure TAmigo.SetSexo(value: TSexo);
begin
  if value <> FSexo then FSexo := value;
  case FSexo of
    mujer: Self.FTratamiento := 'Doña';
    hombre: Self.FTratamiento := 'Don ';
  end;
end;

end.


La franja horaria es GMT +2. Ahora son las 10:03:11.

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