Article View: pl.comp.lang.pascal
Article #92302Re: [A propos] Re: Obiekt jako parametr procedury - problem
From: Magda S
Date: Thu, 06 Dec 2007 19:16
Date: Thu, 06 Dec 2007 19:16
150 lines
4345 bytes
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-mailReferences:
<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