Taulukon alustus?

Mun kysymys on

Miten (vakio) taulukko alustetaan?

6

626

    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. Voitasko leikkiä jotain tunnisteleikkiä?

      Tietäisi ketä täällä käy kaipaamassa.. kerro jotain mikä liittyy sinuun ja häneen eikä muut tiedä. Vastaan itsekin kohta
      Ikävä
      78
      1785
    2. Tietysti jokainen ansaitsee

      Hän varmasti ansaitsee vain parasta ja sopivinta tietenkin, suon sen onnen hänelle enemmän kuin mielelläni. Aika on nyt
      Ikävä
      18
      1679
    3. Millä voin

      Hyvittää kaiken?
      Ikävä
      16
      1494
    4. En voi sille mitään

      Tulen niin pahalle tuulelle tästä paikasta nykyisin. Nähnyt ja lukenut jo kaiken ja teidän juttu on samaa illasta toisee
      Ikävä
      12
      1174
    5. 50+ naiset kyl

      Lemottaa sillille mut myös niitte kaka lemottaa pahlle ku kävin naiste veskis nuuhiin
      Ikävä
      19
      1173
    6. Välitän sinusta mies

      Kaikki mitä yritin kertoa tänään ei mennyt ihan putkeen..Joka jäi jälkeenpäin ajateltuna suoraan sanottuna harmittaa aiv
      Työpaikkaromanssit
      5
      1161
    7. hieman diabetes...

      Kävin eilen kaverin kanssa keskusapteekissa kun on muutama kuukausi sitten tullut suomesta ja oli diabetes insuliinit lo
      Pattaya
      12
      1126
    8. Annetaanko olla vaan

      Siinä se, tavallaan kysymys ja toteamuskin. Niin turhaa, niin rikkovaa. On niin äärettömän tärkeä, ja rakas olo.. N
      Ikävä
      29
      1121
    9. Miten joku voi käyttää koko elämänsä

      siihen että nostelee täällä vanhoja ketjuja ja troIIaa niihin jotain linkkiä mitä kukaan ei avaa? Ihmisellä ei ole mitää
      Tunteet
      6
      1099
    10. Pakkoruotsi on leikkikieli, jota ei ole tarkoituskaan osata

      Pakkoruotsi on leikkikieli. Ennen leikkikieltä sanottiin siansaksaksi, sitten keksittiin tilalle pakkoruotsi. Pakkoruot
      Kielipolitiikka
      7
      1094
    Aihe