/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
var
Fra : Rikke Bendlin


Dato : 08-09-01 20:43

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!

- Rikke =)



 
 
R. A. Larsen (08-09-2001)
Kommentar
Fra : R. A. Larsen


Dato : 08-09-01 23:55

"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


Michael (09-09-2001)
Kommentar
Fra : Michael


Dato : 09-09-01 09:42

Jeg har et tillægsspørgsmål; Hvad er foredelene ved at bruge pointere frem
var alm. variabler? Det virker unægteligt noget omstændigt at laver
pointere.

/md



R. A. Larsen (09-09-2001)
Kommentar
Fra : R. A. Larsen


Dato : 09-09-01 12:30

"Michael" <Michael@danfamily.org> wrote:
>
> Jeg har et tillægsspørgsmål; Hvad er foredelene ved at bruge pointere frem
> var alm. variabler? Det virker unægteligt noget omstændigt at laver
> pointere.

Det er også meget omstændeligt, men i nogle få tilfælde er det nødvendigt. Man
skal dog holde tungen lige i munden, for hvis du laver en enkelt fejl, går
programmet ned med et brag.

Den eneste fordel, jeg har fundet, er at du kan oprette flere variabler/bruge
mere plads til hver variabel. Prøv en gang selv at bruge:

type
CharArray = array[1..32768] of char;
var
a : array[1..10] of CharArray;
begin
.....

Dette giver problemer i Pascal under DOS, da der kun er 64K til variabler og
du prøver at bruge 10 * 32K = _320K_. Hvis du istedet havde brugt:

type
CharArray = array[1..32768] of char;
PCharArray = ^CharArray;
var
a : array[1..10] of PCharArray;
begin
for i := 1 to 10 do
New(a[i]);
.....
for i := 1 to 10 do
Dispose(a[i]);
end;

har du kun brugt 10 pointere á 4 bytes = _40_bytes_.

MVH, René
--
Using Virtual Access
http://www.vamail.com


Michael (09-09-2001)
Kommentar
Fra : Michael


Dato : 09-09-01 16:16

> har du kun brugt 10 pointere á 4 bytes = _40_bytes_.

Den køber jeg

Tak skal du havde René.

/md



René Jensen (09-09-2001)
Kommentar
Fra : René Jensen


Dato : 09-09-01 17:41

"R. A. Larsen" wrote:
> Den eneste fordel, jeg har fundet, er at du kan oprette flere variabler/bruge
> mere plads til hver variabel.

I visse tilfælde kan brugen af pointere også være hurtigere end ved brug
af variabel-erklæring. F.eks. ved sortering af større komplekse typer,
være en fordel, da man kun skal flytte pointeren fremfor at flytte rundt
på større datamængder i hukommelsen. Det giver selvf. ikke den store
mening at sortere små simple typer, da det ofte er mere kodning til
pointer-baserede sortering.

--
Med venlig hilsen,
René Jensen

Once a wise man told me this:
"I consider Windows as I consider bad weather ... I accept it and hope
for something better!"

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste