Well, to be fair the same is true even if you declare it simply as a public
member.  You change that public member to a public property with read/write
accessors if you need to, without changing the code that uses the public
member.

 

The reason to declare a member as a property is when you positively wish to
hide the implementation, not because you may wish to in the future.

 

 

Note also that for record types, exposure as a property makes such members
harder and unintuitive to work with:

 

  TShape = class

  Private

    fRect: TRect;

  public 

    property Rect: TRect read fRect write fRect;

  end;

 

 

  shape.Rect.Left := 100;  // Error: Left-side cannot be assigned to 

 

 

you have to instead write:

 

  newRect := shape.Rect;

  newRect.Left := 100;

  shape.Rect := newRect;

 

or

 

  shape.Rect := Rect(100, shape.Rect.Top, shape.Rect.Right,
shape.Rect.bottom);

 

or get real nasty and expose the property by reference:

 

  property Rect: PRect read get_Rect;   //get_Rect returns the PRect of
@fRect

 

allowing you to write:

 

  shape.Rect.Left := 100;  // Now this is fine 

 

But notice now that we have a read/write "property" that is declared as
read-only and TShape is oblivious to any changes made to its fRect.

 

Or you could expose each field of the record via a separate property (not a
bad idea for  a TRect, but for more complex/larger records this could be
cumbersome).

 

 

This area is a bit sticky, to say the least, and I don't think there's one
single "right" approach - it depends very much on the specific case at hand.

 

 

 

Having said AAALLL that, I have long since got in the habit of never
exposing public member variables in a class.  J

 

 

From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] On
Behalf Of David Moorhouse (DUG)
Sent: Friday, 21 January 2011 07:33
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] Variabels stored

 

Because a property hides the implementation details ... you can change to
read / write methods later with no change to the code that is using the
property.  A public field exposes the implementation.

Cheers

D


On 21/01/11 00:44, Ross Levis wrote: 

I don't see the point in doing that, unless the read/write are functions or
procedures.  Just make the string public. 

  

From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] On
Behalf Of David Moorhouse (DUG)
Sent: Thursday, 20 January 2011 11:18 PM
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] Variabels stored 

  

Or as field properties if you want to access them from another form ... 

type 

    TWallaceForm = class(TForm) 

       btnOK: TButton; 

    private 

      FWallacesPrivateVar: string;     // private storage 

     public 

       property WallacesPrivateVar: string read  FWallacesPrivateVar write
FWallacesPrivateVar; 

  ... 

    end; 

  

Cheers

D

On 20/01/11 16:09, Conor Boyd wrote: 

Probably as a field on the form class that you're dealing with. 

  

e.g. 

  

type 

    TWallaceForm = class(TForm) 

       btnOK: TButton; 

    ... 

      txtWallacesHiddenTextBox: TEdit; 

    ... 

    private 

      FWallacesPrivateVar: string;     // use this instead of your hidden
text box. 

                                                    // Can create as many
"variables" (or fields as they're known in Delphi parlance, hence the F
prefix) 

                                                    // of as many different
types as you like. 

    ... 

    end; 

  

Hope I've understood what you're asking for correctly. 

  

HTH, 

  

Conor 

  

From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] On
Behalf Of Marshland Engineering
Sent: Thursday, 20 January 2011 3:45 p.m.
To: delphi@delphi.org.nz
Subject: [DUG] Variabels stored 

Is there a way to store variables so I can use them from one procedure to
another?   

  

I have been currently storing them in hidden edit.text boxes on the form but
there must be a better way. 

  

Cheers Wallace 

   
   
_______________________________________________  
NZ Borland Developers Group - Delphi mailing list  
Post: delphi@delphi.org.nz  
Admin: http://delphi.org.nz/mailman/listinfo/delphi  
Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject:
unsubscribe  

  

 
 
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi@delphi.org.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject:
unsubscribe

 

_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi@delphi.org.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: 
unsubscribe

Reply via email to