Miten (vakio) taulukko alustetaan?
Taulukon alustus?
6
709
Vastaukset
- 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
Yritystuet 10 mrd. vuodessa, eli yrittäjäriski valtiolla kuten kommunismissa
Pelkästään Viking Linen viinanhakuristeilyitä sponsoroidaan 20 miljoonalla eurolla vuosittain. Dieselin verotukikin on626725- 666318
Sture Fjäder haluaa tuensaajien nimet julki
Kokoomuspoliitikko haluaa yli 800 euroa kuukaudessa tukia saavien nimet julki. Ehkä olisi syytä julkaista myös kuvat? h1355294Luotathan 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 kaunist494151En 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💛214008Onnettomuus
Hukkajärventiellä kolaroi lavetti ja henkilöauto. Uutista ei missään! Hys hys ollaanko hiljaa tästäkin?53540Riikka on siis suomalaisille velkaa 84 mrd
Jos kauhukabinetti istuu vaalikauden loppuun. Keskimäärin yli 20 miljardia uutta velkaa rikkaiden veronalennuksiin jokai1323500Sanna on suomalaisille siis velkaa 24 mrd euroa
Muistanette vielä kuinka Italian remonttirahoja perusteltiin sillä, että italialaiset ostaa suomalaisilta paidatkin pääl1722955- 252829
Maahanmuuttajat torjuvat marjanpoiminnan - "emme ole rottia"
Ruotsalaisen journalistin selvitys paljasti, miksi maahanmuuttajat kieltäytyvät työstä. Taustalla vaikuttavat kulttuuris622681