Taulukon alustus?

Mun kysymys on

Miten (vakio) taulukko alustetaan?

6

709

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Delphiguru

      vakiotaulukko alustetaan näin:
      Esimerkkitaulukossa on siis 39 alkiota, indeksit ovat tässä 0..38

      const

      CC = 39;

      VakioTaulukkoA : Array[0..CC-1] of Integer = (
      50, 40, 27, 36, 34, 24, 21, 4, 31, 24, 22, 25, 29, 36, 10, 13, 10, 42, 150,
      31, 12, 8, 66, 52, 5, 48, 12, 14, 3, 9, 1, 4, 7, 3, 3, 3, 2, 14, 4
      );

    • PisteP

      Joissakin tapauksissa myös aliohjelmaa FillChar on käytetty.

      • -d2006-

        Vakioita EI normaalisti tulisi koskaan muuttaa,
        eikä niitä voi edes muuttaa, vakiot määritellään ohjelman/metodin yms. Alustuksessa, tuo mainitsemasi FillChar kyllä toimii mikä kääntäjään on erikseen asetettu että sallitaan vakioiden ajonaikainen muokkaus, mutta sitä ei voi alkajille edes suositella.

        Alla lainaus delphin ohjeesta.

        "Controls whether typed constants can be modified or not. When enabled (equivalent to {$J }), typed constants can be modified, and are in essence initialized variables. When disabled (equivalent to {$J-}), typed constants are truly constant, and any attempt to modify a typed constant causes the compiler to report an error. Writable consts refers to the use of a typed const as a variable modifiable at runtime.
        Old source code that uses writable typed constants must be compiled with this option enabled, but for new applications it is recommended that you use initialized variables and compile your code with the option disabled."


    • lisäkysymys

      Miten tuo alustus tehdään kun joku taulukko halutaan alkuarvottaa tietyillä arvoilla?

      • Delphiguru

        unit Esimerkki;
        interface

        const

        CC = 39;

        var

        VakioTaulukkoA : Array[0..CC-1] of Integer;


        implementation

        initialization

        {} FillChar(VakioTaulukkoA, SizeOf(VakioTaulukkoA), 0);

        // em. nollan tilalle voi laittaa minkä tahansa muunkin tavuksi (Byte) tulkittavan arvon, esim: $80 mikä tarkoittaa 80h = 128.

        finalization

        end.


        HUOM: huomasithan, että tässä taulukko VakioTaulukkoA ei ole enää const vaan var eli normaali muuttuja.

        Tuo, että kyseessä on BYTE, niin tarkoittaa juuri sitä, että jos laitat:

        FillChar(VakioTaulukkoA, SizeOf(VakioTaulukkoA), $80);

        niin silloin yhden Integer -tyyppisen alkion arvoksi tulee $80808080 = -2139062144


      • WantSomeMore

        Jos tavu ei riitä alkuarvoksi niin voit aina seuraavalla yksinkertaisella tavalla alustaa taulukon haluamallasi (tyypin rajoissa) olevalla arvolla.

        Esim.

        var
        tau : array[1..10] of Cardinal;
        Index : Integer;
        begin
        // Alustetaan taulukko suurimmalla mahdollisella 32 (etumerkittömällä) bitin arvolla
        for Index := Low(Tau) to High(Tau) do
        tau[Index] := INFINITE;

        Tuo Low/High ihan vaan esimerkin kannalta kun joskus ovat käteviä dynaamisissa ohjelmissa..


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

    Luetuimmat keskustelut

    1. Yritystuet 10 mrd. vuodessa, eli yrittäjäriski valtiolla kuten kommunismissa

      Pelkästään Viking Linen viinanhakuristeilyitä sponsoroidaan 20 miljoonalla eurolla vuosittain. Dieselin verotukikin on
      Yrittäjyys
      62
      6725
    2. Pystyisitkö pitämään

      Näppejä erossa jos tulisi siihen tilaisuus
      Ikävä
      66
      6318
    3. Sture Fjäder haluaa tuensaajien nimet julki

      Kokoomuspoliitikko haluaa yli 800 euroa kuukaudessa tukia saavien nimet julki. Ehkä olisi syytä julkaista myös kuvat? h
      Maailman menoa
      135
      5294
    4. Luotathan siihen tunteeseen, joka välillämme on?

      Uskothan myös, että se kestää tämän? Kaipaan sinua valtavasti. Vielä tehdään yhdessä tästä jotain ihmeellistä ja kaunist
      Ikävä
      49
      4151
    5. En saa sua mielestäni vaikka tekisin mitä

      Mikä tähän auttaa.. ei mikään. Edes aika. Kaivan sut kohta vaikka kivenkolosta että saan kysyä haluatko sinäkin💛
      Ikävä
      21
      4008
    6. Onnettomuus

      Hukkajärventiellä kolaroi lavetti ja henkilöauto. Uutista ei missään! Hys hys ollaanko hiljaa tästäkin?
      Kuhmo
      5
      3540
    7. Riikka on siis suomalaisille velkaa 84 mrd

      Jos kauhukabinetti istuu vaalikauden loppuun. Keskimäärin yli 20 miljardia uutta velkaa rikkaiden veronalennuksiin jokai
      Maailman menoa
      132
      3500
    8. Sanna on suomalaisille siis velkaa 24 mrd euroa

      Muistanette vielä kuinka Italian remonttirahoja perusteltiin sillä, että italialaiset ostaa suomalaisilta paidatkin pääl
      Maailman menoa
      172
      2955
    9. Tuntuuko ettet tiedä

      Enää miten toimia mun suhteen. Kun en taida tietää itsekään
      Ikävä
      25
      2829
    10. Maahanmuuttajat torjuvat marjanpoiminnan - "emme ole rottia"

      Ruotsalaisen journalistin selvitys paljasti, miksi maahanmuuttajat kieltäytyvät työstä. Taustalla vaikuttavat kulttuuris
      Maailman menoa
      62
      2681
    Aihe