Výsledky 1 až 24 z 24

Téma: [Delphi] Nepřímé připojení dat k objektu

Hybrid View

Předcházející příspěvek Předcházející příspěvek   Další příspěvek Další příspěvek
  1. #1

    Standardní [Delphi] Nepřímé připojení dat k objektu

    Nevim jestli jsem nazval tento thread správně, ale problém je takovýto:
    Máme udělat lineární seznam, ktery obsahuje prvky typu TPrvek. TPrvek má atribut Naslednik:TPrvek. Potřebuji k prvku připojit data. Udělal jsem to tak, že jsem přidal nový atibut Data:String. Jenže takhle to nemá být. Prvek seznamu nemá v sobě nést data. Řešení je prý pomocí dědičnosti nebo pomocí tzv. háčku. Ale ani v jedno prípadě nevim jak na to. Data mohou být podle potřeby různá. Mohou být trojího typu:
    1. typ: 2 polozky(string,integer)
    2. typ: 3 polozky(string,string,integer)
    3. typ: 2 polozky(string,string)
    Vytvoril bych si tedy 3 třídy od každého typu dat jednu.
    Jak mám zajistit aby jsem měl k prvku připojen konkrétně jeden typ dat?
    NTB MSI EX600, CPU Intel Core 2 Duo T5550@1,83Ghz, 2GB RAM, GF8400M-G 256MB, HDD 320GB...

  2. #2

    Standardní Re: [Delphi] Nepřímé připojení dat k objektu

    Neporadím ti úplně konkrétně, protože to úplně nechápu... ale zkusil bych se podívat na přetížené (overloaded) funkce - nadefinuješ stejné fce (snad i třídy), s různými parametry a ono se to bude chovat podle toho jaké parametry k tomu dáš...

  3. #3
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    324

    Standardní Re: [Delphi] Nepřímé připojení dat k objektu

    pomoci dedicnosti to muzes udelat tak, ze budes mit tridu TPrvek, ktera bude mit atribut Naslednik typu TPrvek. Trida TSeznam bude obsahovat atribut Prvni: TPrvek.
    Data zajistis treba tak, ze z tridy TPrvek "zdedis" sve tridy, ktere budou obsahovat jeste atributy pro tva data, libovolnych typu.
    Do seznamu pak bude pomoci metody "add" pridavat vzdy na konec (projdes si cyklem / rekurzi seznam od Prvni pres atributy Naslednik cely seznam az na konec) prvek, ktery bude instanci tve tridy rozsirujici TPrvek, ale pretypovane na TPrvek..cili pro seznam se bude tva trida tvarit jako TPrvek, bude mit atribut Naslednik. Pro tve potreby bude obsahovat data dle libosti (pro pouziti zase pretypujes zpet).

    Nebo muzes mit TPrvek, ktery bude obsahovat atribut Naslednik: TPrvek a atribut Data: TPrvekData. Pak si vytvoris tridu TMojeData, ktera bude rozsirovat TPrvekData a bude obsahovat atributy pro tva data. Do seznamu budes na konec pridavat instanci TPrvek, kde atribut Data bude odkazovat na instanci tridy TMojeData a podobne..

    A urcite jsou dalsi zpusoby
    Naposledy upravil Anduril; 12.03.2008 v 22:18.
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  4. #4

    Standardní Re: [Delphi] Nepřímé připojení dat k objektu

    Citace Původně odeslal Smitka Zobrazit příspěvek
    Neporadím ti úplně konkrétně, protože to úplně nechápu... ale zkusil bych se podívat na přetížené (overloaded) funkce - nadefinuješ stejné fce (snad i třídy), s různými parametry a ono se to bude chovat podle toho jaké parametry k tomu dáš...
    "Snad i třídy" To jde? Jinak zajímavá myšlenka. Jdu se pokusit to nějak zprovoznit. Kdyby měl někdo další nápady, tak sem s nimi
    NTB MSI EX600, CPU Intel Core 2 Duo T5550@1,83Ghz, 2GB RAM, GF8400M-G 256MB, HDD 320GB...

  5. #5

    Standardní Re: [Delphi] Nepřímé připojení dat k objektu

    2 Anduril: Tak toto se jeví jako jednodušší myšlenka Jen pro upresneni to ma byt seznam cyklicky s hlavou a mame implementovat metody pro vkládání na konec a za aktualni prvek, ale to na situaci moc nemění. Snad to dám do kupy, díky.
    NTB MSI EX600, CPU Intel Core 2 Duo T5550@1,83Ghz, 2GB RAM, GF8400M-G 256MB, HDD 320GB...

  6. #6
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    324

    Standardní Re: [Delphi] Nepřímé připojení dat k objektu

    Jj, tak to uz je jedno jak to mezi sebou vnitrne propojis, na myslence to nic nemeni
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  7. #7

    Standardní Re: [Delphi] Nepřímé připojení dat k objektu

    Tak už jsem narazil. Mám v Třídě TSingleList tyto metody:
    constructor Vytvor(Hlava:TPrvek); Virtual;
    procedure Zrus(Parametr:Boolean);
    function JePrazdny:Boolean;
    function ZpristupniPrvni:TPrvek;
    procedure VlozPrvni(Prvni:TPrvek);
    procedure OdeberPrvni;
    procedure VlozNaslednika(Dalsi:TPrvek);
    procedure OdeberNaslednika;
    procedure SetAktualni(Prvek:TPrvek);
    function GetAktualni:TPrvek;

    Vetšina z nich má parametr typu TPrvek. Jenze já vytvářím objekty z třídy dědící po TPrvek, dejme tomu TPotomek1,TPotomek2 a TPotomek3. Z toho plyne že bych musel každou metodu s parametrem typu Tprvek přetížit 3x. Neexistuje jednodušší řešení?

    BTW: Jak bych přetížil třeba tuto funkci?
    function TSingleList.ZpristupniPrvni:TPrvek;
    begin
    ZpristupniPrvni:=FHlava.ZpristupniNaslednika;
    end;
    To asi nejde ne? Bych ji musel vlozit do třídy TPotomek a dat ji typ prislusneho potomka.
    Neztracíte se v tom? Ja jo
    NTB MSI EX600, CPU Intel Core 2 Duo T5550@1,83Ghz, 2GB RAM, GF8400M-G 256MB, HDD 320GB...

  8. #8

    Standardní Re: [Delphi] Nepřímé připojení dat k objektu

    Citace Původně odeslal Chuck Zobrazit příspěvek
    "Snad i třídy" To jde? Jinak zajímavá myšlenka. Jdu se pokusit to nějak zprovoznit. Kdyby měl někdo další nápady, tak sem s nimi
    Myslim, ze by to slo udelat pomoci ruznych konstruktoru s ruznyma parametrama. Ale na 100% to nereknu, jsem trochu zblblej z javy... Je to jen napad...

  9. #9
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    324

    Standardní Re: [Delphi] Nepřímé připojení dat k objektu

    Nevim jak v Delphi (treba to neumi? nevim), ale imho by melo stacit, jak jsem psal, pri vkladani prvku tento pretypovat na TPrvek. Jelikoz tve tridy dedi z TPrvek a seznam pouziva pouze tridu TPrvek, pak by to melo stacit...
    Ten seznam by mel byt obecny, nevazat se na konkretni tridy, pouze na TPrvek. Nepotrebujes v nem pracovat s daty, takze tridy TPotomek1 a pod te vubec nezajimaji. Kdyz ze seznamu pak TPrvek dostanes, pretypujes si ho zpet na TPotomekX.
    Naposledy upravil Anduril; 13.03.2008 v 06:36.
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  10. #10

    Standardní Re: [Delphi] Nepřímé připojení dat k objektu

    Stejne jako v jinych objektove orientovanych jazycich se nemusi nic pretypovavat - resp. udela se tam implicitni pretypovani.


    Napr:

    Kód:
    TPrvek = class
     procedure Zpracuj(co: TPrvek);
    end;
    
    TDalsiPrvek = class (TPrvek)
    end;
    
    TDalsi2Prvek = class (TPrvek)
    end;
    v kodu pak muzes napsat toto:

    Kód:
    var 
      prvek: TPrvek;
      dalsiPrvek: TDalsiPrvek;
      dalsi2Prvek: TDalsi2Prvek;
    begin
      prvek = TPrvek.Create();
      dalsiPrvek = TDalsiPrvek.Create();
      dalsi2Prvek = TDalsi2Prvek.Create();
      prvek.Zpracuj(dalsiPrvek);
      prvek.Zpracuj(dalsi2Prvek);
    end;
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Podobná témata

  1. ipconfig - Vista
    Založil -Braba- v sekci fóra Sítě
    Odpovědí: 2
    Poslední příspěvek: 11.03.2008, 10:31
  2. Sdílení internetového připojení ve Windows Vista
    Založil sergiX v sekci fóra Sítě
    Odpovědí: 0
    Poslední příspěvek: 29.12.2007, 19:18

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •