🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: [A propos] Re: Obiekt jako parametr procedury - problem

#92302
From: Magda S
Date: Thu, 06 Dec 2007 19:16
150 lines
4345 bytes
Solaris pisze:
> Dnia Thu, 06 Dec 2007 17:19:00 +0100, jakże pięknego
> Magda S <sowamagda@vp.pl> wystukał co zawarte poniżej:
> 
> : Terrmit pisze:
> : > Magda S pisze:
> : >> Terrmit pisze:
> : > [ciach]
> : >>
> : >> A odpowiedź mogłaby być przypuszczalnie taka:
> : >>
> : >>
> : >> Są sobie dwa obiekty - X1 i X2. Obydwa mają właściwość Count typu 
> : >> Integer.
> : >>
> : >> I mamy taki kod:
> : >>
> : >>
> : >> X1.Count := 1;
> : >> X2.Count := 2;
> : >>
> : >> with X1 do
> : >> begin
> : >>   with X2 do
> : >>   begin
> : >>     Count := 3;
> : >>   end;
> : >> end;
> : >>
> : >>
> : >>
> : >> I teraz zagadka: do której właściwości odnosi się "Count := 3"? do 
> : >> X1.Count czy X2.Count?
> : >>
> : >> Zastanów się DOBRZE, zanim odpowiesz...
> : >>
> : > Count := 3 odnosi się do X2
> 
> Masz jakiś zepsuty kompilator:
> 
> #v+
> type
>     TObject     = object
>     public
>         X       : Integer;
>     end;
>     
>     
> var
>     obj1, obj2: TObject;
>     
>     
>     
> begin
>     obj1.X:=1;
>     obj2.X:=2;
>     
>     with (obj1) do
>     begin
>         with (obj2) do
>         begin
>             x:=666; // (*) odnosi się do obj2 a nie obj1 tak jak ty twierdzisz
>         end;
>     end;
>     
>     writeln(obj1.x);
>     writeln(obj2.x);
> end.
> #v-
> 
> I teraz tak:
> --(solaris@admin)-<19:31:41>-<Thu Dec 06>
> --(~/tmp)-$> fpc ob                                                                                           
> Free Pascal Compiler version 2.2.0 [2007/08/31] for i386
> Copyright (c) 1993-2007 by Florian Klaempfl
> Target OS: Linux for i386
> Compiling ob.pp
> Linking ob
> 28 lines compiled, 0.2 sec
> 
> --(solaris@admin)-<19:32:00>-<Thu Dec 06>
> --(~/tmp)-$> ob                                                                                               
> 1
> 666
> 
> (*) Czyli widać na przykładzie, że twoje X2.Count (u mnie x (aka obj2.x)) odnosi
> się do obj2.x a nie jak ty twierdzisz obj1.x


I tu się mylisz, bo Twoje obj2.x niekoniecznie musi być tym samym co 
moje x2.count.

Zanim zaczniesz się dalej wymądrzać, uruchom w Delphi to, o czym pisałem:


unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls;

type
   TForm1 = class(TForm)
     Edit1: TEdit;
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;

var
   Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
   X: TComponent;
begin
   X := Edit1;

   if X is TControl then
   begin
     with TControl(X) do
     begin
       Color := clRed;
       // Co zrobi się czerwone: forma czy kontrolka?


     end;
   end;

   Refresh;

end;

end.


I jeśli coś tu szwankuje, to Twoje myślenie, nie mój kompilator (Delphi 
4 C/S ze wszystkimi patchami). Grunt to dobry humor i pewność siebie, 
fakty (co naprawdę stanie się czerwone?) można sobie odpuścić, 
nieprawdaż? Bo jeśli fakty nie zgadzają się z naszymi wyobrażeniami, to 
tym gorzej dla faktów, nie?
Technical Details
Message-ID: <fj9hrg$stp$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail
References: <fj7cka$ldq$1@nemesis.news.tpi.pl> <fj899b$8j6$1@atlantis.news.tpi.pl> <fj8fdm$ehh$1@news.onet.pl> <fj8on4$2pb$1@atlantis.news.tpi.pl> <fj97do$t6j$1@news.onet.pl> <20071206193428.4f37d31d.solaris@be.inspired>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail
From: Magda S <sowamagda@vp.pl>
Newsgroups: pl.comp.lang.pascal
Subject: Re: [A propos] Re: Obiekt jako parametr procedury - problem
Date: Thu, 06 Dec 2007 20:16:58 +0100
Organization: Onet.pl
Lines: 154
Message-ID: <fj9hrg$stp$1@news.onet.pl>
References: <fj7cka$ldq$1@nemesis.news.tpi.pl> <fj899b$8j6$1@atlantis.news.tpi.pl> <fj8fdm$ehh$1@news.onet.pl> <fj8on4$2pb$1@atlantis.news.tpi.pl> <fj97do$t6j$1@news.onet.pl> <20071206193428.4f37d31d.solaris@be.inspired>
NNTP-Posting-Host: 83-238-229-135.adsl.inetia.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1196968624 29625 83.238.229.135 (6 Dec 2007 19:17:04 GMT)
X-Complaints-To: usenet@news.onet.pl
NNTP-Posting-Date: Thu, 6 Dec 2007 19:17:04 +0000 (UTC)
X-Sender: KHtBgMtiNDK3eTOhE4lk6g==
In-Reply-To: <20071206193428.4f37d31d.solaris@be.inspired>
User-Agent: Thunderbird 2.0.0.9 (Windows/20071031)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit