Taulukon alustus?

Mun kysymys on

Miten (vakio) taulukko alustetaan?

6

653

    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. Kuuluuko ehkäisy parisuhteessa molemmille

      Mieheni pelkää kovasti sitä, että minun käyttämä ehkäisy (pillerit) pettävät ja että tulisin raskaaksi. Hänellä on jo en
      Parisuhde
      62
      1214
    2. Suhun ihastuminen oli liikaa mulle ...

      Se meni jo sairauden ja sekavuuden puolelle. Oisin tehnyt melkein mitä vain, että saisin sut ja se ei ole tervettä. Vars
      Ikävä
      34
      1020
    3. Mihin ihastuit ensimmäisenä

      kaivatussasi? 💯
      Ikävä
      63
      1010
    4. Tänään valtuustossa

      Striimi rikki. Mennään saliin ja otetaan pussillinen mätiä omenoita mukaan. Popcornit valmiiksi kun Savola alkaa puhumaa
      Ähtäri
      26
      1007
    5. Miten paljon odotat hänen

      Kohtaamisia tai näkemistä? Kuinka hyvä keskusteluyhteys teillä on?
      Ikävä
      69
      955
    6. Onko kaivattunne puhelias

      Vai hiljainen hissukka.
      Ikävä
      46
      941
    7. Jiille kysymys

      Oletko kuitenkin mennyt eteenpäin ja sinulla joku uusi nainen kuvioissa? 🥹
      Ikävä
      73
      892
    8. Suomussalmen mustalaiset

      Uutena suomussalmelaisena mietin, että millasta porukkaa ovat?
      Suomussalmi
      17
      870
    9. Oletko mielestäsi kaivattusi

      ihannetyyppi ulkoisesti?
      Ikävä
      56
      852
    10. Minkälaiset hiukset

      kaivatullasi on? Miehellä Kenties ananas, puolikalju jne jne Naisella kenties vaaleat kiharat jne jne
      Ikävä
      27
      836
    Aihe