Einzelnen Beitrag anzeigen

Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#1

Zeiger auf dynamisches Array

  Alt 31. Okt 2010, 12:31
Delphi-Version: 2006
Hallo alle zusammen.

Ich zeige Euch erstmal den Quellcode:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TArrayList = array of array of integer;
  PArrayList = ^TArrayList;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure modifyMatrix(list:PArrayList);
Begin
  list^[2,4]:=5;
end;

procedure TForm1.Button1Click(Sender: TObject);
var mylist:PArrayList;
begin
  new(mylist);
  setLength(myList^,4,4);
  mylist^[0,5]:=3;
  modifyMatrix(myList);

  label1.Caption:=inttostr(mylist^[0,5]);
  label2.Caption:=inttostr(mylist^[2,4]);
  //dispose(mylist);
end;
Jetzt hätte ich dazu zwei Fragen:

1. Mit setLength lege ich die Größe des dynamischen Arrays fest. Warum kann ich über dessen Grenzen hinaus trotzdem Werte ablegen?

2. Die kommentierte Zeile "dispose(mylist);" erzeugt einen Absturz. Warum?


Danke
  Mit Zitat antworten Zitat