Olion upottaminen

Aritzona

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

12

355

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

      Kauniskasvoinen ihanuus 😘 saan sut vielä
      Ikävä
      40
      7003
    2. Hei rakas...

      Miten on työpäivä sujunut? Rakastan sinua 💗
      Ikävä
      32
      3948
    3. Ei tämä etene ikinä

      Kun kumpikaan ei enää ota yhteyttä. Mä en ainakaan uskalla.
      Ikävä
      46
      3347
    4. Edelleen sitä on vaikea uskoa

      Että olisit oikeasti rakastunut muhun
      Ikävä
      40
      2949
    5. Vitsi mihin menit. Heti takasin.

      Mä näin sut tuu takasin! Oli kiire, niin en ehtiny sin perään!
      Ikävä
      17
      2726
    6. Toiveikas vai toivoton

      torstai? Ajatuksia?
      Ikävä
      37
      2238
    7. Mukavaa päivää

      Mun rakkauden kohteelle ❤️ toivottavasti olet onnellinen
      Ikävä
      16
      2196
    8. Koko ajan olet

      Senkin suhteen kiusannut. Halut on ihan mielettömät olleet jo pitkään
      Ikävä
      41
      2153
    9. Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...

      Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons
      Suomalaiset julkkikset
      48
      2087
    10. Miksi et irrota otettasi

      Suhteeni?
      Ikävä
      40
      2058
    Aihe