Taulukon alustus?

Mun kysymys on

Miten (vakio) taulukko alustetaan?

6

757

Äänestä

    Vastaukset 6

    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. Tässä ovat Elämäni biisi vieraat lauantai 19.9. - Yksi vieras on kohuttu TTK-juontajaehdokas

      Elämäni biisi vieraslista on harvinaisen mielenkiintoinen lauantaina. Mukana myös kohuttu TTK-juontajaehdokas, josta ei
      Tv-sarjat
      21
      1371
    2. 68
      1340
    3. Mies joka on oikeasti kiinnostunut

      Ja näkee sut pitkäaikaisena kumppanina, siirtää vaikka vuoria selvittääkseen asiat eikä ota pienintäkään riskiä menettää
      Ikävä
      133
      1261
    4. Mikä sun salaisuus on,kun näytät niin nuorelta..

      Vaikka oot jo noin vanha!?
      Ikävä
      108
      1255
    5. Kunnanhallitus

      Miten käy täällä vuosia tuomioita jakaneelle valittajalle, hovioikeus hylännyt kaikki syytteet.
      Puolanka
      67
      1059
    6. Onko nyt kaikki asiat käyty läpi?

      Mun mielestä on👍
      Ikävä
      109
      1009
    7. Rauha, sopiiko

      Ei häiritä enää toisiamme. Annetaan molemmille rauha unohtaa, pyydän tätä todella. Kiitos. Miehelle.
      Ikävä
      94
      967
    8. Miesten (epä)viehättävyydestä kysymys

      Mieltä askarruttava asia, liki dilemma. Palstallahan jotkut miesoletetut usein toteavat, että kaikki naiset tavoittelev
      Sinkut
      182
      933
    9. Minkä kappaleen

      haluaisit soivan, kun astellaan alttarille?
      Ikävä
      89
      896
    10. MiltäKaivattusi

      Näyttää? !
      Ikävä
      45
      881
    11. Ei siitä pääse yli, eikä ympäri!

      Pakko se on myöntää ja tunnustaa. Olisin halunnut p*nna sinua sydämeni kyllyydestä. Itseäni vanhemmalle naiselle
      Ikävä
      66
      801
    12. Myönnetään, tunnen lämpimiä tunteita kohtaasi

      Vaikutat tosin liian hyvältä ollaksesi totta. Komeita miehiä on maailma pullollaan mutta sinussa on jotain.....
      Ikävä
      50
      696
    13. Vieläkö tykkäät

      Minusta niin paljon että olisit valmis?
      Ikävä
      43
      676
    14. Tykkäätkö minusta

      Mies vai et? -nainen
      Ikävä
      58
      663
    15. Mitä meidän välillämme

      On käynyt näiden vuosien aikana?
      Ikävä
      70
      646
    16. Olit hyödytön.

      Mulle hyödytön..
      Ikävä
      98
      638
    17. Humppila korvasi johtajia tekoälyllä

      https://yle.fi/a/74-20215155 Humppilassa on lakkautettu teknisen ja hallintojohtajan virat. Säästöä tuli hetkessä 150
      Maailman menoa
      87
      628
    18. Perhoseni (miehelle)

      Miksi et usko, että mun rakkaus sinuun on aitoa ja vilpitöntä? Tai että se oli jo silloin? Miksi ajattelet, ettet ole r
      Ikävä
      123
      622
    19. Uskaltaisitko

      Tavata kaivattusi tässä tilanteessa?
      Ikävä
      67
      596
    20. Olen tavattavissa

      tänään klo 17-02 siinä ravintolassa. Tulethan sinäkin?
      Ikävä
      53
      577
    Aihe