🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.pascal
17 messages
17 total messages Started by Terrmit Thu, 06 Dec 2007 00:27
Obiekt jako parametr procedury - problem
#92296
Author: Terrmit
Date: Thu, 06 Dec 2007 00:27
24 lines
1357 bytes
Witam,

Mam (w skrócie) taką procedurę:

procedure InitStringGrid(var Grid: TStringGrid; head: String);
begin
   with Grid do begin
     //costam robie, a na koniec
       Hint := head;
   end; //with
end;

Teraz w głównym programie wywoluję procedure tak:

InitStringGrid(sgIncProd, 'dymek');

No i okazuje się, że sgIncProd.Hint = '' (pusty)
a powinien zawierać wyraz 'dymek'.

Może jestem już zmęczony, ale nie bardzo kumam co jest nie tak.

Używam Lazarusa 0.9.25 i fpc 2.2.0-0 w Fedorze 8.

Sławek
Re: Obiekt jako parametr procedury - problem
#92297
Author: Terrmit
Date: Thu, 06 Dec 2007 07:40
6 lines
1095 bytes
Terrmit pisze:
Podobny problem poruszony był kiedyś w wątku:
http://groups.google.pl/group/pl.comp.lang.pascal/browse_thread/thread/2c8cc7da6f194fd6/b44dfa2038660f65
ale bez odpowiedzi.

Sławek
Re: Obiekt jako parametr procedury - problem
#92314
Author: Terrmit
Date: Thu, 06 Dec 2007 08:17
33 lines
1836 bytes
Terrmit pisze:
> Witam,
> 
> Mam (w skrócie) taką procedurę:
> 
> procedure InitStringGrid(var Grid: TStringGrid; head: String);
> begin
>   with Grid do begin
>     //costam robie, a na koniec
>       Hint := head;
>   end; //with
> end;
> 
> Teraz w głównym programie wywoluję procedure tak:
> 
> InitStringGrid(sgIncProd, 'dymek');
> 
> No i okazuje się, że sgIncProd.Hint = '' (pusty)
> a powinien zawierać wyraz 'dymek'.
> 
> Może jestem już zmęczony, ale nie bardzo kumam co jest nie tak.
> 
> Używam Lazarusa 0.9.25 i fpc 2.2.0-0 w Fedorze 8.
> 
> Sławek
Ech, oczywiście zmęczenie dało się we znaki.
Błąd miałem gdzie indziej, a dokładniej w linii, którą oznaczyłem jako:
      //costam robie, a na koniec
Nie będę tego przytaczał, ale był tam warunek, który działał
błędnie i Hint := head; po prostu się nie wykonywało.

Przepraszam za zamieszanie.
   Sławek
[A propos] Re: Obiekt jako parametr procedury - problem
#92298
Author: Magda S
Date: Thu, 06 Dec 2007 09:29
64 lines
1994 bytes
Terrmit pisze:
> Terrmit pisze:
> Podobny problem poruszony był kiedyś w wątku:
> http://groups.google.pl/group/pl.comp.lang.pascal/browse_thread/thread/2c8cc7da6f194fd6/b44dfa2038660f65 
> 
> ale bez odpowiedzi.
> 
> Sławek


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...








A jak już odpowiesz, to popatrz na coś podobnego: jest forma Form1 i 
jakaś kontrolka na tej formie. I teraz mamy tak:


procedure TForm1.<jakas nazwa>;
var
   X: TComponent;
begin
   ... // tu zmiennej X nadaje się wartość

   if X is TControl then
   begin
     with TControl(X) do
     begin
       Color := clRed;
     end;
   end;


jak myślisz, co zrobi się czerwone: kontrolka, czy forma? Sprawdź zanim 
odpowiesz.
Re: [A propos] Re: Obiekt jako parametr procedury - problem
#92299
Author: Terrmit
Date: Thu, 06 Dec 2007 12:04
60 lines
2076 bytes
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

> 
> A jak już odpowiesz, to popatrz na coś podobnego: jest forma Form1 i 
> jakaś kontrolka na tej formie. I teraz mamy tak:
> 
> 
> procedure TForm1.<jakas nazwa>;
> var
>   X: TComponent;
> begin
>   ... // tu zmiennej X nadaje się wartość
> 
>   if X is TControl then
>   begin
>     with TControl(X) do
>     begin
>       Color := clRed;
>     end;
>   end;
> 
> 
> jak myślisz, co zrobi się czerwone: kontrolka, czy forma? Sprawdź zanim 
> odpowiesz.
> 
Czerwona będzie kontrolka.

Bawimy się w quizy?

Sławek
Re: [A propos] Re: Obiekt jako parametr procedury - problem
#92300
Author: Magda S
Date: Thu, 06 Dec 2007 16:19
75 lines
2365 bytes
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




   PUUUUUUUUUUUUUUUUDŁŁŁŁŁŁŁŁŁOOOOOOOOOOOOOOO!




> 
>>
>> A jak już odpowiesz, to popatrz na coś podobnego: jest forma Form1 i 
>> jakaś kontrolka na tej formie. I teraz mamy tak:
>>
>>
>> procedure TForm1.<jakas nazwa>;
>> var
>>   X: TComponent;
>> begin
>>   ... // tu zmiennej X nadaje się wartość
>>
>>   if X is TControl then
>>   begin
>>     with TControl(X) do
>>     begin
>>       Color := clRed;
>>     end;
>>   end;
>>
>>
>> jak myślisz, co zrobi się czerwone: kontrolka, czy forma? Sprawdź 
>> zanim odpowiesz.
>>
> Czerwona będzie kontrolka.

   PUUUUUUUUUUUUUUUUDŁŁŁŁŁŁŁŁŁOOOOOOOOOOOOOOO! Pisałam, żebyś sprawdził, 
zanim odpowiesz.

> 
> Bawimy się w quizy?

Nie. Chciałam zwrócić uwagę na pewną pułapkę, w kwestii POZORNIE oczywistej.
Re: [A propos] Pozornie oczywista instrukcja WITH, czyli Re: Obiekt jako parametr procedury - problem
#92307
Author: Magda S
Date: Thu, 06 Dec 2007 18:31
75 lines
2476 bytes
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




   PUUUUUUUUUUUUUUUUDŁŁŁŁŁŁŁŁŁOOOOOOOOOOOOOOO!




> 
>>
>> A jak już odpowiesz, to popatrz na coś podobnego: jest forma Form1 i 
>> jakaś kontrolka na tej formie. I teraz mamy tak:
>>
>>
>> procedure TForm1.<jakas nazwa>;
>> var
>>   X: TComponent;
>> begin
>>   ... // tu zmiennej X nadaje się wartość
>>
>>   if X is TControl then
>>   begin
>>     with TControl(X) do
>>     begin
>>       Color := clRed;
>>     end;
>>   end;
>>
>>
>> jak myślisz, co zrobi się czerwone: kontrolka, czy forma? Sprawdź 
>> zanim odpowiesz.
>>
> Czerwona będzie kontrolka.

   PUUUUUUUUUUUUUUUUDŁŁŁŁŁŁŁŁŁOOOOOOOOOOOOOOO! Pisałam, żebyś sprawdził,
zanim odpowiesz.

> 
> Bawimy się w quizy?

Nie. Chciałam zwrócić uwagę na pewną pułapkę, w kwestii POZORNIE oczywistej.
Re: [A propos] Re: Obiekt jako parametr procedury - problem
#92301
Author: Solaris
Date: Thu, 06 Dec 2007 18:34
92 lines
3022 bytes
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

-- 
Home: admin.idns.pl
Linux registered user: 408584
Contact: GG#44450, solaris#idns.pl
19:16:28 -!- Platyna Erroneous Nickname 
Re: [A propos] Re: Obiekt jako parametr procedury - problem
#92302
Author: 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?
Re: [A propos] Re: Obiekt jako parametr procedury - problem
#92303
Author: Solaris
Date: Thu, 06 Dec 2007 19:19
21 lines
1712 bytes
Dnia Thu, 06 Dec 2007 20:16:58 +0100, jakże pięknego
Magda S <sowamagda@vp.pl> wystukał co zawarte poniżej:


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

Nic się nie myle, nie podałaś konkretnego przykładu i nie cwaniakuj.
Mój przykład działał zgodnie z założeniami więc wygrałem QUIZ.
Chce buzi zgadnij w co.

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

Nie mam dostępu do takiego kompilatora.


-- 
Home: admin.idns.pl
Linux registered user: 408584
Contact: GG#44450, solaris#idns.pl
19:16:28 -!- Platyna Erroneous Nickname 
Re: [A propos] Re: Obiekt jako parametr procedury - problem
#92305
Author: Terrmit
Date: Fri, 07 Dec 2007 10:14
44 lines
2314 bytes
> : Terrmit pisze:
[ciach]
> : > Count := 3 odnosi się do X2
> 
Tu jest wyraźnie napisane, że X2, a nie X1

Solaris pisze:
 > Dnia Thu, 06 Dec 2007 17:19:00 +0100, jakże pięknego

> Masz jakiś zepsuty kompilator:
[ciach]
> 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

a jak ja napisałem?

> (*) 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
> 
W którym miejscu twierdziłem, że do X1?

Nie chce mi się tego kompilować, ale na logikę, jeśli piszemy coś
w danym bloku begin end, to odnosi się to bezpośrednio do zmiennych
(obiektów) z tego bloku chyba, że wskażemy inaczej.

 >     with (obj1) do
 >     begin
 >         with (obj2) do
 >         begin
 >            x:=666; //odnosi się do obj2
              //aby odniesc się to do obj1 trzeba napisac jawnie
              obj1.x:=777;

Jeśli jest inaczej, to sorry, ale nie wiem dlaczego moje programy
działają. A może mnie się tylko tak wydaje?

Sławek
Re: [A propos] Pozornie oczywista instrukcja WITH, czyli Re: Obiekt jako parametr procedury - problem
#92308
Author: Terrmit
Date: Fri, 07 Dec 2007 10:36
60 lines
2198 bytes
Magda S pisze:
> Terrmit pisze:
>> Magda S pisze:
>>> Terrmit pisze:
>> [ciach]
>>> X1.Count := 1;
>>> X2.Count := 2;
>>>
>>> with X1 do
>>> begin
>>>   with X2 do
>>>   begin
>>>     Count := 3;
>>>   end;
>>> end;
>>>
>>>
>>>
>> Count := 3 odnosi się do X2
> 
> 
> 
> 
>   PUUUUUUUUUUUUUUUUDŁŁŁŁŁŁŁŁŁOOOOOOOOOOOOOOO!
> 
> 
> 
> 
Masz dziwny kompilator.
Zirytowałem się i napisałem przykład:
Na formę przylepiamy Button i dwie Labelki

procedure TForm1.Button1Click(Sender: TObject);
begin
   with Label1 do begin
     with Label2 do begin
       Color := clYellow;
     end;
   end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
   Label1.Color := clRed;
   Label2.Color := clBlue;
end;

Po kliknięciu w Button żółty robi się Label2 !
label1 pozostaje czerwony!

I gdzie tu puuuuuuuuudłooooooooooooo? Gdzie pułapka?

[ciach]
>> Bawimy się w quizy?
> 
> Nie. Chciałam zwrócić uwagę na pewną pułapkę, w kwestii POZORNIE 
> oczywistej.
Kwestia jest oczywista, a nie POZORNIE oczywista. Sama nie sprawdziłaś.

Sławek
Re: [A propos] Pozornie oczywista instrukcja WITH, czyli Re: Obiekt jako parametr procedury - problem
#92309
Author: Magda S
Date: Fri, 07 Dec 2007 11:08
68 lines
2565 bytes
Terrmit pisze:
> Magda S pisze:
>> Terrmit pisze:
>>> Magda S pisze:
>>>> Terrmit pisze:
>>> [ciach]
>>>> X1.Count := 1;
>>>> X2.Count := 2;
>>>>
>>>> with X1 do
>>>> begin
>>>>   with X2 do
>>>>   begin
>>>>     Count := 3;
>>>>   end;
>>>> end;
>>>>
>>>>
>>>>
>>> Count := 3 odnosi się do X2
>>
>>
>>
>>
>>   PUUUUUUUUUUUUUUUUDŁŁŁŁŁŁŁŁŁOOOOOOOOOOOOOOO!
>>
>>
>>
>>
> Masz dziwny kompilator.
> Zirytowałem się i napisałem przykład:
> Na formę przylepiamy Button i dwie Labelki
> 
> procedure TForm1.Button1Click(Sender: TObject);
> begin
>   with Label1 do begin
>     with Label2 do begin
>       Color := clYellow;
>     end;
>   end;
> end;
> 
> procedure TForm1.FormShow(Sender: TObject);
> begin
>   Label1.Color := clRed;
>   Label2.Color := clBlue;
> end;
> 
> Po kliknięciu w Button żółty robi się Label2 !
> label1 pozostaje czerwony!
> 
> I gdzie tu puuuuuuuuudłooooooooooooo? Gdzie pułapka?
> 
> [ciach]
>>> Bawimy się w quizy?
>>
>> Nie. Chciałam zwrócić uwagę na pewną pułapkę, w kwestii POZORNIE 
>> oczywistej.
> Kwestia jest oczywista, a nie POZORNIE oczywista. Sama nie sprawdziłaś.
> 
> Sławek

  Uruchom ten kawałek z Editem i Buttonem na formie, który dalej 
zamieszczam i zobacz, czy naprawdę oczywista. I czy naprawdę mam dziwny 
kompilator, czy to tylko Ty za płytko myślisz.

A potem przeczytaj ten wątek na p.l.c.l.delphi i zobacz, dlaczego 
oczywistość jest pozorna.
Re: [A propos] Pozornie oczywista instrukcja WITH, czyli Re: Obiekt jako parametr procedury - problem
#92310
Author: Terrmit
Date: Fri, 07 Dec 2007 11:58
16 lines
1586 bytes
[ciach]
>  Uruchom ten kawałek z Editem i Buttonem na formie, który dalej 
> zamieszczam i zobacz, czy naprawdę oczywista.
A gdzie ten kawałek?

  I czy naprawdę mam dziwny
> kompilator, czy to tylko Ty za płytko myślisz.
Może jestem nie kumaty, a może po prostu nie czaruj,
tyko powiedz o co chodzi?

> 
> A potem przeczytaj ten wątek na p.l.c.l.delphi i zobacz, dlaczego 
> oczywistość jest pozorna.
> 

Sławek
Re: [A propos] Pozornie oczywista instrukcja WITH, czyli Re: Obiekt jako parametr procedury - problem
#92311
Author: Magda S
Date: Fri, 07 Dec 2007 12:22
4 lines
1295 bytes
> Może jestem nie kumaty, a może po prostu nie czaruj,
> tyko powiedz o co chodzi?
Chyba jesteś niekumaty, skoro nie rozumiesz prostej rzeczy: uruchom 
przykład, o którym pisałam.
Re: [A propos] Pozornie oczywista instrukcja WITH, czyli Re: Obiekt jako parametr procedury - problem
#92312
Author: Terrmit
Date: Fri, 07 Dec 2007 13:31
64 lines
2413 bytes
Magda S pisze:
>> Może jestem nie kumaty, a może po prostu nie czaruj,
>> tyko powiedz o co chodzi?
> Chyba jesteś niekumaty, skoro nie rozumiesz prostej rzeczy: uruchom 
> przykład, o którym pisałam.
No to zgłoś babola do Borlanda, bo u mnie czerwona robi się kontrolka.
Free Pascal 2.2.0-0; Lazarusa 0.9.25; Fedora 8.

Pozdrawiam waszą kumatość,
   Sławek

<code>
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
   Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, 
StdCtrls;

type

   { TForm1 }

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

var
   Form1: TForm1;

implementation

{ TForm1 }

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;

initialization
   {$I unit1.lrs}

end.
</code>
Re: [A propos] Pozornie oczywista instrukcja WITH, czyli Re: Obiekt jako parametr procedury - problem
#92313
Author: DarekM
Date: Fri, 07 Dec 2007 17:35
17 lines
1766 bytes
>>> Nie. Chciałam zwrócić uwagę na pewną pułapkę, w kwestii POZORNIE 
>>> oczywistej.
>> Kwestia jest oczywista, a nie POZORNIE oczywista. Sama nie sprawdziłaś.
>>
>> Sławek
> 
>  Uruchom ten kawałek z Editem i Buttonem na formie, który dalej 
> zamieszczam i zobacz, czy naprawdę oczywista. I czy naprawdę mam dziwny 
> kompilator, czy to tylko Ty za płytko myślisz.
> 
> A potem przeczytaj ten wątek na p.l.c.l.delphi i zobacz, dlaczego 
> oczywistość jest pozorna.

W Lazarusie tControl.Color jest public, więc nie ma problemu
Natomiast w Delphi jest protected więc jest problem
Darek
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