Miten (vakio) taulukko alustetaan?
Taulukon alustus?
6
653
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
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 en621214Suhun ihastuminen oli liikaa mulle ...
Se meni jo sairauden ja sekavuuden puolelle. Oisin tehnyt melkein mitä vain, että saisin sut ja se ei ole tervettä. Vars341020- 631010
Tänään valtuustossa
Striimi rikki. Mennään saliin ja otetaan pussillinen mätiä omenoita mukaan. Popcornit valmiiksi kun Savola alkaa puhumaa261007- 69955
- 46941
- 73892
- 17870
- 56852
Minkälaiset hiukset
kaivatullasi on? Miehellä Kenties ananas, puolikalju jne jne Naisella kenties vaaleat kiharat jne jne27836