🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.pascal
Article #92321

Re: properyty na dynamicznej tablicy

#92321
From: webmajsterek
Date: Thu, 13 Dec 2007 14:06
66 lines
2891 bytes
> Najpierw snip:
> 
> type
>   TDynByteArray = array of byte;
>   TTest         =
>     class
>       private
>         B : TDynByteArray;
>         function GetB(APos:longint):Byte; // ****
>       public
>         property Data[APos:longint]:Byte read GetB;
>         property Data2 : TDynByteArray read B;
>     end;
> 
> function TTest.getB(APos:Longint):Byte;
> begin
>   Result:=B[APos];
> end;
> 
> procedure blah(test:TTest);
> begin
>   SetLength(test.B, 123);
>   test.B[10]:=123;             // *
> end;
> 
> var
>   test : TTest;
> 
> begin
>   test := TTest.Create;
>   blah(test);
>   Writeln(test.Data[10]);
>   SetLength(test.Data2, 1337); // **
>   test.Data2[123] := 123;      // ***
> end.
> 
> > chce ochronic pola przd modyfikacja ( nawet z wnetrza unitu ) - ale
> > nie chce angazowac w to ddoatkowej procedury ( typu getPole )  i
> > odstawiania jej w properyty -- jest to mozliwe ??
> 
> 1. W obrębie jednostki kompilacji wszystko jest "public", w Object
>    Pascalu jest tak w przeciwieństwie do większości języków, z racji
>    braku "przyjaźni" klas. Więc, w obrębie pojedynczego unitu możesz
>    sobie o enkapsulacji najwyżej pomarzyć. Patrz - fragment
>    oznaczony (*).
> 
> 2. Musisz zrobić proxy metode, patrz (****).Inaczej tego nie zrobisz,
>    a jeżeli  wystawisz całego dynamicznego arraya to kompletnie
>    tracisz enkapsulacje/ochrone tego pola. Patrz (***). I do
>    tego nie tylko zawartości, ale też stanu tegoż arraya, patrz (**).
> 

dzieki za podpowiedz .

wiedzialem ze object pascal nie chroni pol obiektow przed dostepem  w obrebie
modulu  ( na poziomie kompilacji ) .
ale to co jest z properyty   to bardo duze niedopatrzenie .

zrobilem cosik takiego  jak ty  ( properyty tylko do odczytu ) 
i odwolale sie do pola properyy Data2  w glownym module . 
i co kompilaor to przpusicil !!


-- 
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Technical Details
Message-ID: <4047.000000a7.47613c77@newsgate.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.pl
References: <fjr6tm$4ok$1@news.dialog.net.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.pl
From: webmajsterek@poczta.onet.pl
Newsgroups: pl.comp.lang.pascal
Subject: Re: properyty na dynamicznej tablicy
Date: 13 Dec 2007 15:06:47 +0100
Organization: Onet.pl SA
Lines: 66
Message-ID: <4047.000000a7.47613c77@newsgate.onet.pl>
References: <fjr6tm$4ok$1@news.dialog.net.pl>
NNTP-Posting-Host: newsgate.onet.pl
Mime-Version: 1.0
X-Trace: newsgate.test.onet.pl 1197554807 23490 213.180.130.18 (13 Dec 2007 14:06:47 GMT)
X-Complaints-To: abuse@onet.pl
NNTP-Posting-Date: 13 Dec 2007 14:06:47 GMT
X-Mailer: http://niusy.onet.pl
X-Forwarded-For: 79.184.22.41, 192.168.243.42
X-User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.10)    Gecko/20071202 Firefox/2.0.0.10
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit