Olion upottaminen

Aritzona

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

12

330

    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. Kuvat! Dannyyn liitetty Helmi Loukasmäki, 22, on puhjennut naisena kukkaan - Some sekoaa: "Sä..."

      Ooo, kaunis aikuinen nainen Helmistä on kasvanut siinä yli 80-vuotiaan Dannyn rinnalla! Katso uudet kuvat: https://ww
      Suomalaiset julkkikset
      47
      3045
    2. Henkirikos Alakylässä

      Nainen löydetty elottomana, mies otettu kiinni. Mitä on tapahtunut?
      Seinäjoki
      47
      2291
    3. Suodatinpussin kastelemalla saa parempaa kahvia

      Kokeilin niksiä ja kyllä tämä kahvi on parempaa nyt. Ei lainkaan maistu paperiselta. Huljuttelee hanan alla suppiloa pap
      Maailman menoa
      122
      1680
    4. Tidätkö nainen

      että suoraan sanottuna v.tut.aa että pääsit näin lähelle minua. Ei olisi oikeasti aikaa tähän mutta silti aina välillä o
      Ikävä
      100
      1533
    5. Onkohan sinulla kaikki hyvin?

      Nyt vähän sellainen outo tunne tuli. Sinun asiasi niin ei minulle toki tarvitse kertoa. Kunhan mietin...
      Ikävä
      38
      1067
    6. Viimeinen reissu tälle kesälle

      Pian se syksy on. Hyvää huomenta ja aurinkoista päivää. ☕🌞🍁🌻🐺❤️
      Ikävä
      169
      934
    7. Mikä on kaivattusi etunimi?

      Otsikossa siis on kysymys eriteltynä. Vain oikeat vastaukset hyväksytään.
      Ikävä
      44
      891
    8. Huikeeta, mahtavaa, ihan mielettömän upeeta

      Me ostettiin talo Espanjasta. Tosin saadaan käyttää sitä vain muutama viikko vuodessa kun on monta muutakin ostajaa! M
      Kotimaiset julkkisjuorut
      175
      846
    9. En kestä katsoa

      Sitä miten sinusta on muut kiinnostuneita. Olen kateellinen. Siksi pitäisi lähteä pois
      Ikävä
      71
      791
    10. Oho! Arja Koriseva paljastaa TTK:n ekasta suorasta lähetyksestä: "On vähän ärsyttävä yhtälö!"

      Upea Arja Koriseva! Tsemppiä haasteelliseen tilanteeseen! Lue lisää: https://www.suomi24.fi/viihde/oho-arja-koriseva-
      Suomalaiset julkkikset
      14
      754
    Aihe