Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Pascal Delphi Misc > Re: Dynamic arr...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 2 of 13 Topic 6010 of 6154
Post > Topic >>

Re: Dynamic arrays of record/object

by Rob Kennedy <me3@[EMAIL PROTECTED] > Mar 12, 2008 at 06:31 PM

sakkieLFS@[EMAIL PROTECTED]
 wrote:
> I ready to pull out my hair on the creation of dynamic arrays of a
> record or object. For some reason I'm having problems setting the
> lenght of the array and assigning values to the elements of the array
> (which is a record). I have included source code. Please help!

According to this code, your problem should not be in setting the 
array's length. The problem occurs beforehand.

> type
> 
>   TSectionData = record
>     DataHeader: string;
>     Data: string;
>   end;
> 
> 
>   TXMLSectionData = class(TObject)
> 
>   private
>     FCount: Integer;
>     FSectionData: array of TSectionData;
>     function GetCount: integer;
>   public
> 
>     constructor Create;
>     destructor Destroy; override;
> 
>     property Count: integer read GetCount write FCount;

Don't have a property that directly writes the value of that field. If 
you assign a new value of the property, then FCount is no longer an 
accurate representation of the length of the array.

You don't really even need FCount. The array already knows its own 
length, and it's easy to detect with the Length function.

>     procedure AddSection(DataHeader: string; Data: string);
> 
>   end;
> 
> type
>   TForm1 = class(TForm)
>     Button1: TButton;
>     procedure Button1Click(Sender: TObject);
>   private
>     { Private declarations }
>   public
>     { Public declarations }
>   end;
> 
> var
>   Form1: TForm1;
> 
> implementation
> 
> {$R *.dfm}
> 
> { TXMLSectionData }
> 
> procedure TXMLSectionData.AddSection(DataHeader, Data: string);

Declare those parameters const to avoid unnecessary reference counting.

> begin
>   SetLength(FSectionData,FCount+1);
>   FSectionData[FCount].DataHeader:= DataHeader;
>   FSectionData[FCount].Data:= Data;
>   Inc(FCount);
> end;
> 
> constructor TXMLSectionData.Create;
> begin
>   inherited;
>   FCount:= 0;
>   SetLength(FSectionData,FCount);

Dynamic arrays start out with length zero, so you don't really need to 
set it explicitly.

Likewise, a class begins life with numeric fields zero and dynamic 
arrays empty, so you don't really need a constructor at all.

> end;
> 
> destructor TXMLSectionData.Destroy;
> begin
> 
>   inherited;
> end;

If that's all you're really doing, then you don't need to have a 
destructor in this class. The one it inherits from its ancestor is 
sufficient.

> procedure TForm1.Button1Click(Sender: TObject);
> var Data: TXMLSectionData;
> begin
>   Data.Create;

That line will surely fail. Doesn't the compiler warn you about using an 
uninitialized variable?

>   Data.AddSection('Header1','test data');
> 
> end;
> 
> function TXMLSectionData.GetCount: integer;
> begin
>   Result := FCount;
> end;



-- 
Rob
 




 13 Posts in Topic:
Dynamic arrays of record/object
sakkieLFS@[EMAIL PROTECTE  2008-03-12 11:46:46 
Re: Dynamic arrays of record/object
Rob Kennedy <me3@[EMAI  2008-03-12 18:31:17 
Re: Dynamic arrays of record/object
"Maarten Wiltink&quo  2008-03-13 10:28:13 
Re: Dynamic arrays of record/object
Hans-Peter Diettrich <  2008-03-12 23:08:41 
Re: Dynamic arrays of record/object
Rob Kennedy <me3@[EMAI  2008-03-13 01:07:21 
Re: Dynamic arrays of record/object
sakkieLFS@[EMAIL PROTECTE  2008-03-12 22:57:12 
Re: Dynamic arrays of record/object
Rob Kennedy <me3@[EMAI  2008-03-13 01:05:32 
Re: Dynamic arrays of record/object
sakkieLFS@[EMAIL PROTECTE  2008-03-12 23:09:38 
Re: Dynamic arrays of record/object
Hans-Peter Diettrich <  2008-03-13 17:15:23 
Re: Dynamic arrays of record/object
sakkieLFS@[EMAIL PROTECTE  2008-03-12 23:21:59 
Re: Dynamic arrays of record/object
sakkieLFS@[EMAIL PROTECTE  2008-03-12 23:56:26 
Re: Dynamic arrays of record/object
Jamie <jamie_ka1lpa_no  2008-03-13 19:04:01 
Re: Dynamic arrays of record/object
"alanglloyd@[EMAIL P  2008-03-13 02:32:55 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Fri Oct 10 19:58:10 CDT 2008.