raV Posted July 12, 2006 Report Share Posted July 12, 2006 Hej. Mam taki kod: [code=Delphi] type Tbbb = class // deklaracja klasy rodzica, podstawowej procedure b(); end; procedure Tbbb.b(); begin ShowMessage(IntToStr( PROBLEM )); end; Taaa = class // deklaracja klasy, ma w sobie klasę Tbb b : Tbbb; c : integer; end; // ... kreujemy te obiekty... [/code] Wiemy, że klasa Tbbb będzie występowała w klasie Taaa. Tam gdzie napisałem PROBLEM, chciałbym, aby znalazła się zmienna c z class Taaa. Tak jakby class Taaa był "właścicielem" konkretnego Tbbb i jak wydobyć z niego zmienną c? Jak to zrobić?Pozdrawiam. Link to comment Share on other sites More sharing options...
5corpio Posted July 12, 2006 Report Share Posted July 12, 2006 Nie bardzo rozumiem. [b]Jakto skąd wiedzieć przcież deklarujesz konkretnie nazwane obiekty to w czym problem ? Musisz przesłać do tego IntToStr jakiś konkretny obiekt typu Taaa. [quote] i jak wydobyć z niego zmienną c [/quote] Nie rozumiem z Tbbb nie "wyłuskasz" (tak się nazywa . ?) zmiennej c bo przecież jej nie ma chyba, że byś zrobił dziedziczenie z klasy Tbbb. Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link to comment Share on other sites More sharing options...
raV Posted July 12, 2006 Author Report Share Posted July 12, 2006 No właśnie chodzi mi o to jak w procedurze b() pokazać wartość c z obiektu Taaa, który posiada wykonujący procedurę b obiekt Tbbb. Link to comment Share on other sites More sharing options...
sazian Posted July 12, 2006 Report Share Posted July 12, 2006 [code=Delphi] type Taaa = record // deklaracja rekordu liczba : integer; end; Tbbb = class // deklaracja klasy procedure PokazLiczbe(_a: Taaa); end; var Form1: TForm1; a: Taaa; // rekord b: Tbbb; // klasa interface procedure Tbbb.PokazLiczbe(_a: Taaa); // procedura której parametrem jest rekord typu Taaa begin ShowMessage(IntToStr(_a.liczba )); end; procedure TForm1.Button1Click(Sender: TObject); begin a.liczba:= 11; // przypisywanie wartości b:= Tbbb.Create; // tworzenie klasy b.PokazLiczbe(a); // procedura klasy wyświetla liczbę z rekordu FreeAndNil(b); // niszczenie klasy zwalnianie pamięci end; [/code] takie coś?? Link to comment Share on other sites More sharing options...
raV Posted July 12, 2006 Author Report Share Posted July 12, 2006 jak coś jeszcze nie jasno opisałem problem to spróbuje inaczej [code=Delphi] TDziecko = class procedure PokazNazwisko; Imie : String; end; TRodzic = class Dzieci = Array of TDziecko; Nazwisko : String; Imie : String; end; (...) Maryśka := TRodzic.Create(...); Maryśka.Dzieci[123] := TDziecko.Create(...); Maryśka.Dzieci[123].PokazNazwisko; [/code]A no coś takiego. Dziecko wie, że jego nazwisko to nazwisko rodziców, przedstawia się właśnie nim. Chciałbym też, aby pole Nazwisko nie występowało w klasie TDziecko. Link to comment Share on other sites More sharing options...
krajew4 Posted July 12, 2006 Report Share Posted July 12, 2006 Możesz zrobić tak: [code=Delphi] Maryska.PokazDziecko(123);ŁŹ'o)h\"{^w'^bpp&6VGW&RE&GŚ2śGŚV6śŚFVvW\"Ś&Vv6tW=ĄmtŹź4) [/code] My life for Aiur! Link to comment Share on other sites More sharing options...
Śnieżynek Posted July 12, 2006 Report Share Posted July 12, 2006 wiesz, ja sobie dałem spokój z tym już na wstępie mojego programowania i teraz słabo się w tym orientuję i trochę żałuję:)był czas, że trochę się orientowałem, kiedy pisałem własne komponenty - i chyba dla nich warto się jednakw tym orientować, ale do Twojego celu z rodzinką z miejsca bym pomyślał o tablicach Link to comment Share on other sites More sharing options...
Spider100 Posted July 12, 2006 Report Share Posted July 12, 2006 Ja bym to zorbił tak w tej sytuacji [code=Delphi] TDziecko = class Imie : String; Rodzic:TRodzic; XX]JTXXĘNBYH^v6śóŚVćCŚ67G'V7F\"DGŚV6ś7&VFR&GŚ3E&GŚ4)4(II4(4)4(4)Qiecko.PokazNazwisko; begin Rodzic.Nazwisko; end; [/code]Pamiętaj że klasa jest tylko wskaźnikiem wiec przechowywanie wskaźnika kosztuje Cię bardzo mało i oszczędzasz sobie trudu . www.spider.dathox.com Link to comment Share on other sites More sharing options...
flash Posted February 2, 2012 Report Share Posted February 2, 2012 Przepraszam ze odgrzeję ale w powyższych postach zapewne było cos co było mi potrzebne ale pozostały pajączki jakby się nie udało tego przywrócić albo było nie do końca wyjaśnieniem poniższego zagadnienia to prószę o sugestie, ale fakt chodzi o taką błahostkę że aż głupio pytać, delphi 2007 TRodzic= class private protected TimerStart: TTimer; public constructor Create();overload; destructor Destroy; overload; procedure Wyswietl(var S: String); end; TDziecko= class private protected public constructor Create();overload; destructor Destroy; overload; procedure Wyswietl(var S: String); overload; end; procedure TRodzic.Wyswietl(var S: String); begin ShowMessage('wyswietlam 1 '+S); end; // ... procedure TDziecko.Wyswietl(var S: String); begin inherited; ShowMessage('wyswietlam 2 '+S); end; Oczywiście tworze zmienną dziecko: TDziecko i jej używam. Z założenia miało zrobić tak aby najpierw zrobiło to co jest w TRodzic.Wyswietl a potem TDziecko.Wyswietl ale przy słówku inherited; pokazuje błąd kompilacji i sie nie kompiluje "[DCC Error] Unit1.pas(71): E2008 Incompatible types" z góry dziekuję Link to comment Share on other sites More sharing options...
Toster Posted February 2, 2012 Report Share Posted February 2, 2012 nie pamietam skladni ale chyba byc powinno inherited(s); albo inherited wyswietl(s); Always Dark<br /> Link to comment Share on other sites More sharing options...
flash Posted February 2, 2012 Report Share Posted February 2, 2012 procedure TDziecko.Wyswietl(var S: String); begin inherited Wyswietl(S); ShowMessage('wyswietlam 2 '+S); end; Działa dzięki wielkie Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.