Article View: pl.comp.lang.pascal
Article #92321Re: properyty na dynamicznej tablicy
From: webmajsterek
Date: Thu, 13 Dec 2007 14:06
Date: Thu, 13 Dec 2007 14:06
66 lines
2891 bytes
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.plReferences:
<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