Hejsa... Pointers indeholder adresser til data i din computers RAM. Der findes udefinerede pointers som ganske enkelt hedder pointer. Og så er der definerede pointers til varianter, konstanter og typer. Formålet med pointers er at gøre dine applikationer neget hurtigere og mere effektive. Specielt, hvis du arbejder med meget data og skal bruge det samme data til forsklellige procedure, komponenter eller applikationer kan du bruge pointers til at pege, i stedet for at kopiere dataerne.
procedure TForm1.FormCreate(Sender: TObject);
var
S1, S2 : string;
P : ^string;
begin
S1 := 'Chadi';
S2 := S1; //Kopier data (Fylder dobbelt saa meger i Ramen)
ShowMessage(S1+' Kopiert');
P := @S1;
S2 := P^; //Peger til S1 - Ingen kopiering!!!
ShowMessage(S1+' Pointer');
end;
Hej,
I dit eks. kopierer du faktisk data i begge linier :
S2 := S1; //Kopier data (Fylder dobbelt saa meger i Ramen)
S2 := P^; //Peger til S1 - Ingen kopiering!!!
Det vil sige at når du dereferere P (altså P^) så tager du indholdet af de data som P peger på og kopiere dem over i S2.
Hvis du der i mod bruger P direkte i ShowMessage, og undlader at sætte S2 := P^, så bliver data ikke kopieret.
ShowMessage(P^+'Pointer');
En anden grund til at ha' pointere er at du allokere variabler i stedet for at de skal oprettes statisk:
//Statisk
var
MyInt : Integer;
// Dynamisk
var
MyInt : PInteger;
MyInt := AllocMem(SizeOf(Integer));
For det ville være ganske irriterende at skulle oprette alle variabler i starten af din unit og det ville ikke være muligt at ha' variabel størrelse variabler.
Pointere giver dig uendelige muligheder for at manipulere dine data samt giver dig en mere dynamisk måde at bygge din kode op på.
/Michael.
[Redigeret d. 21/11-03 00:13:20 af Michael Skovslund]