"Rikke Bendlin" <Rikke_Bendlin@mail.dk> wrote:
>
> Et helt enkelt spørgsmål.
> Jeg har oprettet en variabel af typen double. I løbet af programmet får den
> tildelt en værdi. Hvordan fjerner jeg denne værdi igen, altså så variablen
> ikke længere har nogen værdi tildelt, ikke 0, men ingenting!
Et helt enkelt svar. Det kan du ikke. Prøv en gang at udskrive variablen, /før/
du tildeler den en værdi. Det tekniske svar er, at variablen i virkeligheden er
en henvisning til et sted i hukommelsen, og dette sted har altid et indhold.
Meeeen, hvis du bruger pointere, altså i stedet for at skrive
var d: double;
bruger
var d: ^double;
begin
d := NIL; (* Bare for en sikkerheds skyld *)
......
har den ikke ikke nogen værdi (eller rettere værdien NIL), så længe du ikke har
oprettet den. Når du så skal give den en værdi, skal du huske at oprette den
med "New(d)" før du bruger den første gang. Når du så ikke skal bruge den mere,
fjerner du den med "Dispose(d)" og husk så at sætte d til "NIL". Altså, i
stedet for at skrive:
d := 3;
WriteLn(d);
skal du bruge:
(* Hvis 'd' ikke findes så opret den *)
if d = NIL then
New(d);
(* Brug 'd' *)
d^ := 3;
WriteLn(d^);
(* Fjern 'd' igen *)
Dispose(d);
d := NIL;
(* Har 'd' en værdi? *)
if d = NIL then
WriteLn('"d" har ikke en værdi')
else
WriteLn('"d" har værdien ', d);
Problemet er, at det er meget nemt at lave fejl, når man har med pointere at
gøre.
Håber det hjalp.
MVH, René
--
Using Virtual Access
http://www.vamail.com