Miten (vakio) taulukko alustetaan?
Vastaukset 6
- 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
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 ei211371- 681340
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ää1331261- 1081255
Kunnanhallitus
Miten käy täällä vuosia tuomioita jakaneelle valittajalle, hovioikeus hylännyt kaikki syytteet.671059- 1091009
Rauha, sopiiko
Ei häiritä enää toisiamme. Annetaan molemmille rauha unohtaa, pyydän tätä todella. Kiitos. Miehelle.94967Miesten (epä)viehättävyydestä kysymys
Mieltä askarruttava asia, liki dilemma. Palstallahan jotkut miesoletetut usein toteavat, että kaikki naiset tavoittelev182933- 89896
- 45881
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 naiselle66801Myönnetään, tunnen lämpimiä tunteita kohtaasi
Vaikutat tosin liian hyvältä ollaksesi totta. Komeita miehiä on maailma pullollaan mutta sinussa on jotain.....50696- 43676
- 58663
- 70646
- 98638
Humppila korvasi johtajia tekoälyllä
https://yle.fi/a/74-20215155 Humppilassa on lakkautettu teknisen ja hallintojohtajan virat. Säästöä tuli hetkessä 15087628Perhoseni (miehelle)
Miksi et usko, että mun rakkaus sinuun on aitoa ja vilpitöntä? Tai että se oli jo silloin? Miksi ajattelet, ettet ole r123622- 67596
- 53577