🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.pascal
7 messages
7 total messages Started by webmajsterek@poc Thu, 14 Oct 2010 12:02
Property -- podwujna sk�adnia
#89744
Author: webmajsterek@poc
Date: Thu, 14 Oct 2010 12:02
35 lines
671 bytes
taki kodzik

Type PCell=^TCell;
     TCell=Record
          x,y,value:Integer;
     end;

Type TMyClass=class
        private
          fArea:Array of Array of PCell;
        public
          property Items[x,y:Iteger]:PCell Read Get;Default;
        end;


var MyClass:TMyClass;

teraz jak w kodzie odwolam
       MyClass[1,1].x;   // poprawnie
lub
      MyClass[1,1]^.x:;  // tez kompilator akceptuje ;

ale jak zrobie
      with MyClass[1,1]^  do begin  // tylko taka forme akceptuje kompilator
           x:;
      end;

kto� potrafi to  wyt�umaczy�  dlaczego tak si� dzieje ??



--
Wys�ano z serwisu OnetNiusy: http://niusy.onet.pl

Re: Property -- podwujna składnia
#89745
Author: Grzegorz Skoczyl
Date: Thu, 14 Oct 2010 12:52
21 lines
594 bytes
W dniu 2010-10-14 12:02, webmajsterek@poczta.onet.pl pisze:

> teraz jak w kodzie odwolam
>         MyClass[1,1].x;   // poprawnie

Zgodnie z definicją języka taki zapis (bez „^”) nie jest poprawny.
Kompilator go akceptuje, ale tylko w niektórych kontekstach.

Wydaje mi się, że jest to albo błąd w analizatorze składni (powodujący
jednak poprawne kompilowanie kodu), albo próba „poprawienia” pomyłek
programistów.

Uważam, że nie należy tak kodować.

--
Pozdrawiam,

Grzegorz Skoczylas
http://gskoczylas.rekord.pl
----------------------------------------------

Re: Property -- podwujna =?iso-8859-2?Q?sk³adnia?
#89746
Author: =?iso-8859-2?Q?
Date: Thu, 14 Oct 2010 14:30
39 lines
1092 bytes
On Thu, 14 Oct 2010 12:02:36 +0200, webmajsterek@poczta.onet.pl wrote:
> Type PCell=^TCell;
>      TCell=Record
>           x,y,value:Integer;
>      end;
>
> <snip>
>
> var MyClass:TMyClass;
>
> MyClass[1,1].x;   // poprawnie
> MyClass[1,1]^.x:;  // tez kompilator akceptuje ;
>
> ale jak zrobie
>
> with MyClass[1,1]^  do begin  // tylko taka forme akceptuje kompilator
>    x:;
> end;
>
> kto� potrafi to  wyt�umaczy�  dlaczego tak si� dzieje ??

Albo jaki� syntactic sugar w fpc, albo b��d w analizatorze
kt�ry traktuje jakby ^TCell by� r�wnowa�ny class[w
uproszczeniu ^object, wi�c w uproszczeniu jest ;-)]
i poprawia . na dereference i member access operator z
automatu w AST, bo takie ma "ukryte" znaczenie member
access operator dla class.

A przy with nie ma explicite member access
operatora i pewnie dlatego si� kompilator gubi.

To drugie to domys�, nie kojarz� �eby by� taki cukier
sk�adniowy w fpc kiedykolwiek ;-), wi�c zak�adam
�e to bug jaki�.

--
Pozdrawiam,
�ukasz 'Maly' Ostrowski.      http://l3v.pl/

Re: Property -- podwujna =?ISO-8859-2?Q?sk³adnia?
#89747
Author: Grzegorz Skoczyl
Date: Thu, 14 Oct 2010 15:14
48 lines
1395 bytes
W dniu 2010-10-14 14:30, �ukasz 'Maly' Ostrowski pisze:
> On Thu, 14 Oct 2010 12:02:36 +0200, webmajsterek@poczta.onet.pl wrote:
>> Type PCell=^TCell;
>>       TCell=Record
>>            x,y,value:Integer;
>>       end;
>>
>> <snip>
>>
>> var MyClass:TMyClass;
>>
>> MyClass[1,1].x;   // poprawnie
>> MyClass[1,1]^.x:;  // tez kompilator akceptuje ;
>>
>> ale jak zrobie
>>
>> with MyClass[1,1]^  do begin  // tylko taka forme akceptuje kompilator
>>     x:;
>> end;
>>
>> kto� potrafi to  wyt�umaczy�  dlaczego tak si� dzieje ??
>
> Albo jaki� syntactic sugar w fpc, albo b��d w analizatorze
> kt�ry traktuje jakby ^TCell by� r�wnowa�ny class[w
> uproszczeniu ^object, wi�c w uproszczeniu jest ;-)]
> i poprawia . na dereference i member access operator z
> automatu w AST, bo takie ma "ukryte" znaczenie member
> access operator dla class.
>
> A przy with nie ma explicite member access
> operatora i pewnie dlatego si� kompilator gubi.

Te� s�dz�, �e mniej wi�cej o to chodzi.

> To drugie to domys�, nie kojarz� �eby by� taki cukier
> sk�adniowy w fpc kiedykolwiek ;-), wi�c zak�adam
> �e to bug jaki�.

Podejrzewam, �e zosta�o to zaimplementowane dla zgodno�ci z Delphi,
gdzie te� to dzia�a podobnie.

--
Pozdrawiam,

Grzegorz Skoczylas
http://gskoczylas.rekord.pl
----------------------------------------------

Re: Property -- podwujna =?ISO-8859-2?Q?sk³adnia?
#89748
Author: =?iso-8859-2?Q?
Date: Thu, 14 Oct 2010 15:25
13 lines
489 bytes
On Thu, 14 Oct 2010 15:14:12 +0200, Grzegorz Skoczylas wrote:
> Podejrzewam, �e zosta�o to zaimplementowane dla zgodno�ci z Delphi,
> gdzie te� to dzia�a podobnie.

Je�eli w dialekcie Delphi Object Pascala tak si� to zachowuje,
to mamy bezpo�redni pow�d dla kt�rego w FPC tak jest.
Od pocz�tku twierdzili �e chc� trzyma� kompatybilno�� z
Delphi i cross-kompilowalno�� �r�de� z D.

--
Pozdrawiam,
�ukasz 'Maly' Ostrowski.      http://l3v.pl/

Re: Property -- podwujna składnia
#89749
Author: "Wiktor S."
Date: Thu, 14 Oct 2010 21:39
17 lines
427 bytes
Grzegorz Skoczylas wrote:
> W dniu 2010-10-14 12:02, webmajsterek@poczta.onet.pl pisze:
>
>> teraz jak w kodzie odwolam
>>         MyClass[1,1].x;   // poprawnie
>
> Zgodnie z definicją języka taki zapis (bez „^”) nie jest poprawny.
> Kompilator go akceptuje, ale tylko w niektórych kontekstach.

Jest to zdecydowanie ficzer (udokumentowany) kompilatora. Słusznie czy
niesłusznie, nie jest to bug.

--
Azarien



=?iso-8859-2?Q?Re:_Property_--_podwujna_sk³adnia?
#89750
Author: "Wiktor S."
Date: Thu, 14 Oct 2010 21:41
13 lines
303 bytes
> To drugie to domys�, nie kojarz� �eby by� taki cukier
> sk�adniowy w fpc kiedykolwiek ;-), wi�c zak�adam
> �e to bug jaki�.

Jest taki w Delphi. Nie jest to bug.
FPC pozwala na to w trybie delphi {$MODE DELPHI}. W trybie "w�asnym" {$MODE
OBJFPC} to nie przejdzie.


--
Azarien


Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads