Suomi24 Keskustelussa on viikonlopun aikana ollut poikkeuksellisen paljon bottien automaattiseti luomia kommentteja. Pahoittelemme tästä aiheutunutta harmia. Olemme kiristäneet Keskustelujen suojausasetuksia ja kommentointi on toistaiseksi estetty ulkomailta.

Class of ?

Olioita kehässä

1

154

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Mika0800

      Class of = luokkatyyppityyppi

      siis:

      kun esimerkiksi:

      procedure NaytaKokonaisluku(I:Integer);
      begin
      ShowMessage('kokonaisluvun arvo on ' IntToStr(I) );
      end;

      voit kutsua tätä näin:

      NaytaKokonaisluku(3);
      NaytaKokonaisluku(5);

      Jos kuitenkin et etukäteen tiedä, minkä luvun haluat näyttää, tarvitset muuttujan:

      var
      K : Integer;

      jolloin voit näyttää muuttujan K sisältämän kokonaisluvun näin:

      NaytaKokonaisluku(K);

      aivan vastaavasti:

      Jos esim. olet määritellyt luokat:

      TKuvio = class(TGraphicControl)
      end;

      TKolmio = class(TKuvio)
      end;

      TNelio = class(TKuvio)
      end;

      TYmpyra = class(TKuvio)
      end;

      Voit luoda olion esim. näin:

      var
      Kuvio1 : TKuvio;

      begin
      // joko -tai (ei kannata luoda useita olioita ja ylikirjoittaa muuttujan vanhaa sisältöä

      Kuvio1 := TKolmio.Create(Self);
      Kuvio1 := TNelio.Create(Self);
      Kuvio1 := TYmpyra.Create(Self);


      end;

      mutta entä, jos et tiedä etukäteen, mitä kuviota olet luomassa ?

      Aivan kunten Integer määrittelee tyypin, johon voi tallentaa kokonaisluvun, niin Class of -rakenteella määritellään tyyppi, johon voi tallentaa luokan tyypin:

      TKuvioTyyppi = class of TKuvio;

      ja kun on määritelty tyyppi, seuraavaksi tarvitaan ko. tyyppiä oleva muuttuja,

      var
      KuvioLuokka : TKuvioTyyppi;

      KuvioLuokka := TKolmio;

      TAI

      KuvioLuokka := TNelio;

      TAI

      KuvioLuokka := TYmpyra;

      kun muuttujan KuvioLuokka arvo on asetettu (ja huom: sitä voi myöhemmin muuttaa koska tahansa), voidaan sitä käyttää kiinteän tyypin asemesta:

      sensijaan, että:

      Kuvio1 := TKolmio.Create(Self);

      voidaan yhtä hyvin:

      Kuvio1 := KuvioLuokka.Create(Self);

      tässä siis luodaan olio, jonka tyyppi on tallennettu muuttujaan KuvioLuokka, sensijaan, että se olisi kiinteästi esim. TKolmio tai TYmpyra.

      Eli aivan, kuten Integer on kokonaislukuTYYPPI, ja String on merkkijonoTYYPPI, niin TKuvioTyyppi on luokkatyyppiTYYPPI, johon siis tallennetaan luokkatyyppejä.

      Lisäksi, koska tässä on määritelty:

      TKuvioTyyppi = class of TKuvio;

      niin muuttujaa, joka on määritelty olevan tyyppiä ä TKuvioTyyppi (kuten esim. KuvioLuokka) voidaan tallentaa vain tyyppiä TKuvio tai tyyppejä, jotka on (suoraan tai epäsuoraan) periytetty luokasta TKuvio.

      Jos siis määrittelet:

      TVarillinenKolmio = class(TKolmio)

      niin vot asettaa myös:

      KuvioLuokka := TVarillinenKolmio

      sensijaan em. määrityksin yritys asettaa:

      KuvioLuokka := TStringlist;

      aiheuttaa kääntäjän virheilmoituksen, sillä vaikka TStringlist on luokkatyyppi, se EI periydy tyypistä TKuvio.

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

    Luetuimmat keskustelut

    1. Millä voin

      Hyvittää kaiken?
      Ikävä
      70
      2307
    2. Jotain puuttuu

      Kun en sinua näe. Et ehkä arvaisi, mutta olen arka kuin alaston koivu lehtiä vailla, talven jäljiltä, kun ajattelen sinu
      Ikävä
      101
      2103
    3. Haluan sut

      Haluatko sinä vielä mut?
      Ikävä
      78
      1718
    4. Haluaisin aidosti jo luovuttaa ja unohtaa

      Ei tästä mitään tule koskaan.
      Ikävä
      78
      1536
    5. Hei A, osaatko

      sanoa, miksi olet ihan yhtäkkiä ilmestynyt kaveriehdotuksiini Facebookissa? Mitähän kaikkea Facebook tietää mitä minä en
      Ikävä
      41
      1520
    6. Ampuminen Iisalmessa

      Älytöntä on tämä maailman meno.
      Iisalmi
      10
      1447
    7. Pohjola kadulla paukuteltu

      Iltasanomissa juttua.
      Iisalmi
      31
      1419
    8. 52
      1288
    9. Synnittömänä syntyminen

      Helluntailaisperäisillä lahkoilla on Raamatunvastainen harhausko että ihminen syntyy synnittömänä.
      Helluntailaisuus
      64
      1226
    10. Mitä tämä tarkoittaa,

      että näkyy vain viimevuotisia? Kirjoitin muutama tunti sitten viestin, onko se häipynyt avaruuteen?
      Ikävä
      30
      1209
    Aihe