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
Author: Terrmit
Date: Thu, 06 Dec 2007 00:27
Date: Thu, 06 Dec 2007 00:27
24 lines
1357 bytes
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
Author: Terrmit
Date: Thu, 06 Dec 2007 07:40
Date: Thu, 06 Dec 2007 07:40
6 lines
1095 bytes
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
Author: Terrmit
Date: Thu, 06 Dec 2007 08:17
Date: Thu, 06 Dec 2007 08:17
33 lines
1836 bytes
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
Author: Magda S
Date: Thu, 06 Dec 2007 09:29
Date: Thu, 06 Dec 2007 09:29
64 lines
1994 bytes
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
Author: Terrmit
Date: Thu, 06 Dec 2007 12:04
Date: Thu, 06 Dec 2007 12:04
60 lines
2076 bytes
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
Author: Magda S
Date: Thu, 06 Dec 2007 16:19
Date: Thu, 06 Dec 2007 16:19
75 lines
2365 bytes
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
Author: Magda S
Date: Thu, 06 Dec 2007 18:31
Date: Thu, 06 Dec 2007 18:31
75 lines
2476 bytes
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
Author: Solaris
Date: Thu, 06 Dec 2007 18:34
Date: Thu, 06 Dec 2007 18:34
92 lines
3022 bytes
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
Author: 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?
Re: [A propos] Re: Obiekt jako parametr procedury - problem
Author: Solaris
Date: Thu, 06 Dec 2007 19:19
Date: Thu, 06 Dec 2007 19:19
21 lines
1712 bytes
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
Author: Terrmit
Date: Fri, 07 Dec 2007 10:14
Date: Fri, 07 Dec 2007 10:14
44 lines
2314 bytes
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
Author: Terrmit
Date: Fri, 07 Dec 2007 10:36
Date: Fri, 07 Dec 2007 10:36
60 lines
2198 bytes
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
Author: Magda S
Date: Fri, 07 Dec 2007 11:08
Date: Fri, 07 Dec 2007 11:08
68 lines
2565 bytes
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
Author: Terrmit
Date: Fri, 07 Dec 2007 11:58
Date: Fri, 07 Dec 2007 11:58
16 lines
1586 bytes
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
Author: Magda S
Date: Fri, 07 Dec 2007 12:22
Date: Fri, 07 Dec 2007 12:22
4 lines
1295 bytes
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
Author: Terrmit
Date: Fri, 07 Dec 2007 13:31
Date: Fri, 07 Dec 2007 13:31
64 lines
2413 bytes
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
Author: DarekM
Date: Fri, 07 Dec 2007 17:35
Date: Fri, 07 Dec 2007 17:35
17 lines
1766 bytes
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