Miten (vakio) taulukko alustetaan?
Taulukon alustus?
6
733
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
Lataus pakkaskelissä
En olisi koskaan ostanut sähköautoa jos olisin tajunnut että ne eivät lataa pakkasissa suurteholatauksella vaan istut tu1937297Kun väestö ikääntyy ja veronmaksajat vähenee, mitä sitten vasemmistolaiset?
Maahanmuutto ei vaan ole ratkaisu väestön ikääntymiseen. Maahanmuutto lykkää ja hidastaa väestön ikääntymistä ja työv1293300Miksei Trump ole kiinnostunut Suomen valloittamisesta?
Täällähän on enemmän turvetta kuin Norjalla öljyä. Eikö Ttump ole turvenuija?1161942"Mitä sä nainen tuot sitten pöytään" ?
Jos mies provaidaa ja suojelee... Pitääkö miesten kysyä tuollaisia?591901Minja jytkyttää vas.liiton kannatusta ylöspäin
Alkaa raavaat duunarimiehetkin palaamaan vasemmistoliiton kannattajiksi. Eduskunnassahan on vain kaksi työntekijöiden p611857- 191809
Aktivistinainen pysäytti ICE-agentin luodin päällään USA:ssa!
Video ampumistilanteesta: https://edition.cnn.com/2026/01/07/us/video/ice-shooting-minneapolis-digvid "Media: ICE:n am811786Oikeistopuolueiden kannatus vain 37,8 %, vasemmiston 43,0 %
Keskustaan jää 17,4 prosenttia ja loput ovat sitten mitä ovat. Mutta selvästikin Suomen kansa on vasemmalle kallellaan.61675Ekologinen kommunismi tulee voittamaan fossiilikapitalismin
Kiina on mahtitekijä uusiutuvien energialähteiden kehityksessä, ja Trump osoitus viimeisestä öljyn perään itkemisestä, m171561- 691393