Avatar billede dl Nybegynder
28. juni 2002 - 11:40 Der er 4 kommentarer og
1 løsning

pointere, hvordan

Hvordan virker de der pointere?
Jeg kan ikke forstå det der med pointere.
Og jeg kan ikke finde noget rigtig stof på nettet, som er skrivet i PAP-sprog.

Jeg er nået så langt at en pointer er en henvisning til hukommelsen, og at kan selv kan ændre på og bestemme størrelsen på pointeren.

men hvordan brugere man dem ?
og hvad er der så godt ved dem?

PS. Skær det ud PAP.

//dl
Avatar billede borrisholt Novice
28. juni 2002 - 11:48 #1
Avatar billede dl Nybegynder
28. juni 2002 - 15:13 #2
Tak, men det var nu ikke skrivet i PAP-sprog. Men har set på det.
Og hvorfor virker det eksempel så ikke.

procedure TForm1.Button1Click(Sender: TObject);
Var
  p: PChar;
begin
  GetMem(p, 200);
  p := 'Hej med dig !!';
  Button1.Caption := p;
  FreeMem(p, 200);        // Invaid Pointer operation, hvorfor det ?
  p := Nil;
end;
Avatar billede hreiff Nybegynder
28. juni 2002 - 16:39 #3
Du kan bare skrive FreeMem(p);
Avatar billede hermandsen Juniormester
28. juni 2002 - 17:43 #4
Du kunne evt. låne Delphi 4 Programmering af Per Amdal Steffensen... Jeg mener at der er et helt afsint om pointere i den bog. Den er oven i købet godt skrevet og på dansk...

http://www.pythia.dk/anmeldelser/vis_anmeldelse.php?id=1
http://www.systime.dk/titel.asp?udgivelseid=2563
Avatar billede eht Nybegynder
28. juni 2002 - 18:36 #5
Pointere kan være utrolig brugbare, hvis man vil lave lidt mere komplekse programmer.

Pointer betyder simpelthen ’en der peger på noget’  eller ’pegepind’.
En pointer i delphi kan pege på hvad som helst, Det kommer an på hvordan den bliver erklæret.
Der kan siges meget om pointere, og det bliver hurtigt lidt indviklet at forklare.

Et eksempel:

Lav et nyt program.

Under formens variabelerklæringer erklærer du:

Billedpointer:^TImage;  //en pointer kan erklæres som en peger til f.eks. et billede sådan her:

ValgtBillede:TImage;    // en almindelig variabel af typen Timage.

Indsæt dernæst f.eks. 6 Timage på  form1 og indlæs billeder i dem alle.

Ved  Image1Click skriver du:
begin
Billedpointer := @sender;              //’sender’ er billedet selv. Altså Billedpointer sættes til at pege på billedet selv
ValgtBillede := Billedpointer^;    //Derefter defineres at variablen ’ValgtBillede’ er lig med det ’Billedpointeren’ peger på, altså billedet selv.
End;

Alle 6 billeder skal bruge den sammem ’OnClick’- event

Indsæt også 3 Tbutton
Indsæt OnClick – kode som vist herunder hvor hele eksemples kode er vist.

************************************************************

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Image1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Billedpointer:^TImage;
  ValgtBillede:TImage;

implementation

{$R *.DFM}

procedure TForm1.Image1Click(Sender: TObject);
begin
    Billedpointer := @sender;
    ValgtBillede := Billedpointer^;      //Hvilket billedet skal der peges på.
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ValgtBillede.Name);    //Vis navnet på det billede der peges på
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ValgtBillede.Left:=0;    // Flyt det billede der peges på
ValgtBillede.Top:=0;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ValgtBillede.Hide;    //Skjul det billede der peges på
end;

end.

**************************************************************

Dette er et meget enkelt eksempel.

Pointere kan også bruges til noget der hedder ’kædede’ strukturer.
Hvis man f.eks. laver et program hvor brugeren selv kan oprette billeder, tekster osv. som f.eks. i et multimediepræsentationsprogram.
Hvis man ikke sætter disse dynamisk oprettede objekter ind i en kædet struktur, kan man ikke gøre ret meget med dem.
Det ER svært stof, men meget brugbart. Det kan ikke forklares med få ord.
Læs evt. afsnit om poinere i Per Amdal Steffensens :Delphi 4 programmering. (god bog).


//Eht
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester