Olion upottaminen

Aritzona

Voisitko (tai voisiko joku muu) kertoa (selvemmän) esimerkin olion upottamisesta.

12

388

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Delphikoodari..

      En tiedä onko "olion upottaminen" oikea termi, itse vain ajatuksissa olen sitä käyttänyt, kun sitä niin paljon käytän näissä Delphin omissa komponenteissa :D

      Esimerkiksi TStringList luokassa on tämmöinen ominaisuus, tätä StringListiä käyttää myös monet komponentit, kuten TComboBox.

      Eli sen sijaan että esim. ComboBoxiin lisätään vain merkkijonoja, osoitetaan ItemIndexillä ja tehdään sen perusteella joku toiminto. Voidaan itemiin upottaa oma olio ja tehdä sillä sitten niitä toimintoja.

      |var
      | sl: TStringList;
      | o, o2: TLuokka;
      |begin
      | sl := TStringList.Create();
      | o := TLuokka.Create();
      |
      | sl.AddObject( o, TObject( o ) );
      |
      | o2 := TLuokka( sl.Objects[0] );
      | o2.Terve();
      |end;
      |

      • :::::::::::

        Miten määritelty tuo TLuokka on määritelty?


      • luokka..
        ::::::::::: kirjoitti:

        Miten määritelty tuo TLuokka on määritelty?

        Ihan miten haluat luokan määritellä...

        |type
        | TLuokka = class
        | private
        | FMuuttuja: Integer;
        | public
        | constructor Create();
        | end;

        ..........

        |constructor TLuokka.Create();
        |begin
        | FMuuttuja := 2008;
        |end;

        ............

        Perus olio-ohjelmointia

        http://www.delphibasics.co.uk/RTL.asp?Name=Class


      • Pallo hukassako?
        luokka.. kirjoitti:

        Ihan miten haluat luokan määritellä...

        |type
        | TLuokka = class
        | private
        | FMuuttuja: Integer;
        | public
        | constructor Create();
        | end;

        ..........

        |constructor TLuokka.Create();
        |begin
        | FMuuttuja := 2008;
        |end;

        ............

        Perus olio-ohjelmointia

        http://www.delphibasics.co.uk/RTL.asp?Name=Class

        Mitä (Luokan TLuokka tai) olion o2 metodi terve tekee?
        Miten se on määritelty?

        procedure TLuokka.terve;
        begin
        // siis mitä tähän ?
        end;


      • Delphikoodari..
        Pallo hukassako? kirjoitti:

        Mitä (Luokan TLuokka tai) olion o2 metodi terve tekee?
        Miten se on määritelty?

        procedure TLuokka.terve;
        begin
        // siis mitä tähän ?
        end;

        Päättele itse! Kyse oli vain esimerkistä!

        ShowMessage( ' No terveppä terve!' );


      • Pallo yhä hukassako?

        Mitä rivi
        o2 := TLuokka( sl.Objects[0] );
        tarkoittaa (tekee)?


      • Delphikoodari..
        Pallo yhä hukassako? kirjoitti:

        Mitä rivi
        o2 := TLuokka( sl.Objects[0] );
        tarkoittaa (tekee)?

        Eli se ottaa TStringListin (sl) Objects kokoelman ensimmäiseen itemiin upotetun olion.

        Eli toisin sanoen se on sama kuin se eka o. Jos et ymmärrä pointereiden päälle mitään, niin voi olla hankala tajuta.

        Oli vain tarkoitus havainnollistaa sitä "upotusta"


      • Mika0800

        "Esimerkiksi TStringList luokassa on tämmöinen ominaisuus, tätä StringListiä käyttää myös monet komponentit, kuten TComboBox."

        Monessa Delphin visuaalisessa komponentissa on yhtenä ominaisuutena TStrings -luokka, mutta monessa toteutus on rajattu siten, että AddObject( ... ) on käytännössä sama kuin Add( ... );

        Tällaisiin ominaisuuksiin EI voi "upottaa" objektia.

        esim:

        {} var
        {} OmaOlio : TLuokka;
        { ... }
        {}
        {} Memo1.Items.AddObject('jokin merkkijono', OmaOlio) ;
        {}
        { ... }

        lisäksi esimerkissä ollut:

        sl.AddObject( o, TObject( o ) );

        on väärin.

        oikein olisi esim:

        sl.AddObject( o.ClassName, o );

        tuon o.ClassName tilalle voi laittaa minkä tahansa merkkijonon.

        tuossa esimerkissä o.ClassName palauttaisi: 'TLuokka'

        Ainakin uudemmat Delhit hyväksyvät tämänkin:

        sl := TStringList.Create();

        enemmän Delphi -tyylinen tapa:

        sl := TStringList.Create; { Tämä kelpaa jopa Delphi 1.0:llekin }

        Tuo Delphi 1.0 on ainoa 16 -bittinen Delphi, eivätkä sillä käännetyt ohjelmat toimi windows Vistassa. Sääli sinänsä, nimittäin monen ohjelman asennusohjelma on käännetty 16 -bit ohjelmaksi siksi, että näin saadaan pienempi exe -tiedosto.

        Toisaalla palstalla kysellään FTP -toteutuksesta Delphillä.

        Ararat Synapse - ääni tälle !

        Muita siis:

        ICS ( by Francois Piette )
        Indy ( by Kudzu )

        salakirjoitustakin delphille löytyy:

        TPLockBox - alunperin TurboPowerSoftwaren kaupallinen luomus, sittemmintajolla ilmaiseksi SourceForgesta.


      • Delphikoodari..
        Mika0800 kirjoitti:

        "Esimerkiksi TStringList luokassa on tämmöinen ominaisuus, tätä StringListiä käyttää myös monet komponentit, kuten TComboBox."

        Monessa Delphin visuaalisessa komponentissa on yhtenä ominaisuutena TStrings -luokka, mutta monessa toteutus on rajattu siten, että AddObject( ... ) on käytännössä sama kuin Add( ... );

        Tällaisiin ominaisuuksiin EI voi "upottaa" objektia.

        esim:

        {} var
        {} OmaOlio : TLuokka;
        { ... }
        {}
        {} Memo1.Items.AddObject('jokin merkkijono', OmaOlio) ;
        {}
        { ... }

        lisäksi esimerkissä ollut:

        sl.AddObject( o, TObject( o ) );

        on väärin.

        oikein olisi esim:

        sl.AddObject( o.ClassName, o );

        tuon o.ClassName tilalle voi laittaa minkä tahansa merkkijonon.

        tuossa esimerkissä o.ClassName palauttaisi: 'TLuokka'

        Ainakin uudemmat Delhit hyväksyvät tämänkin:

        sl := TStringList.Create();

        enemmän Delphi -tyylinen tapa:

        sl := TStringList.Create; { Tämä kelpaa jopa Delphi 1.0:llekin }

        Tuo Delphi 1.0 on ainoa 16 -bittinen Delphi, eivätkä sillä käännetyt ohjelmat toimi windows Vistassa. Sääli sinänsä, nimittäin monen ohjelman asennusohjelma on käännetty 16 -bit ohjelmaksi siksi, että näin saadaan pienempi exe -tiedosto.

        Toisaalla palstalla kysellään FTP -toteutuksesta Delphillä.

        Ararat Synapse - ääni tälle !

        Muita siis:

        ICS ( by Francois Piette )
        Indy ( by Kudzu )

        salakirjoitustakin delphille löytyy:

        TPLockBox - alunperin TurboPowerSoftwaren kaupallinen luomus, sittemmintajolla ilmaiseksi SourceForgesta.

        "sl.AddObject( o, TObject( o ) );"

        Vähän muisti pätki, eli tietty eka parametri on otsikko, o.Otsikko();
        .....................

        "Ainakin uudemmat Delhit hyväksyvät tämänkin:"

        sl := TStringList.Create();

        "enemmän Delphi -tyylinen tapa:"

        "sl := TStringList.Create; { Tämä kelpaa jopa Delphi 1.0:llekin }"

        No kyse on vain tyylistä.

        Delphi 1.0 on jo wanha kuin taivas, eli tuskin sillä kukaan enään nykyään koodailee. Itse olen vain tottunut käyttämään aina sulkeita (C/C opittu tapa), kertoo minun silmään hyvin, ettei mitään parametreja anneta.

        Nykykoneissa on myös tosi paljon muistia ja isot kiintolevyt, ehkä joskus kauan sitten pienet exe-koot oli hyvä olla olemassa.


    • Aritzona

      Tekisitkö pienen esimerkkiohjelman (siis kokonainen listaus)
      jossa olisi tuo olion upottaminen

      • Delphikoodari..

        Huitsi kun jaksais :) Yleensä tänne tulee kirjoiteltua vain kännissä ja koodit voi mennä väärin, kun ei niitä voi tarkistella. Mutta jospa mulla olis maanantaina töissä vähän löysää aikaa, niin voisin jonkun simppelin esimerkin kirjoitta...


      • Zimppa..

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Vesikin maksaa, miksei hengitysilma?

      Jatkuvasti itketään ettei ole rahaa mihinkään, mutta tilastojen mukaan rahaa on enemmän kuin koskaan, joten miksei asial
      Maailman menoa
      29
      1899
    2. Satuolennoista tarinointi ei kuulu peruskoulun tehtäviin

      Opetustunteja on muutenkin käytössä vain rajallinen määrä. Eli nämä satuhommat koulun ulkopuolelle vapaaehtoisiin harras
      Maailman menoa
      165
      1870
    3. Suomalainen perheenisä vaatii Suvivirren esittämisestä hyvityksiä

      Itse lapsena uskonnonopetuksesta vissiin traumoja saanut ihka suomalainen (!) perheenisä vaatii Espoon kaupungilta korva
      Maailman menoa
      373
      1719
    4. Mies profiloin sinut

      Etsit täysin hallittavaa mutta samalla poikkeuksellista ihmistä. Etsit jotain mitä et koskaan tule saamaan.
      Ikävä
      215
      1229
    5. Lahkokasteen ja kristillisen kasteen erot

      Raamatun mukaan Kristillisessä yhdessä kasteessa Jumala pesee ja puhdistaa ihmisen sydämen ja poistaa perisynnin kirouks
      Kaste
      422
      1148
    6. Känsäkoura ja hotelli

      Tietoa kuka ostanut?
      Kuhmo
      12
      1111
    7. Heikki Paasosen Marita-vaimo jätti tunteikkaat jäähyväiset: "Tällä kertaa me..."

      Heikki Paasonen on naimisissa Marita Paasosen (os. Alatalo) kanssa ja heillä on kaksi pientä lasta. Nyt koitti aika jätt
      Suomalaiset julkkikset
      8
      1056
    8. Salainen kastekoulutus

      Millainen on helluntailainen kastekoulutus ja kauanko se kestää ?
      Kaste
      285
      1015
    9. Nostetaanko nainen kissa pöydälle?

      Ja selvitetään nämä tunteet?
      Ikävä
      82
      1011
    10. Pirkanlinna yleisötapahtuma

      Oli todella hyvä tilaisuus. Ja EERO. L. Aivan mahtava tyyppi. Veti rennosti ja asiallisesti. Ja yleisöltä hyviä kysymyks
      Ähtäri
      50
      991
    Aihe