Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Было:
var
A: array[1..100] of string;
B: array[1..10] of array [1..20] of integer;
Стало можно:
var
A: array of string;
B: array of array of integer;
Декларация динамического массива (переменных A и B) не выделяет под них памяти. Память выделяется процедурой SetLength:
SetLength(A,100);
SetLength(B,10,20);
Индексация динамических массивов всегда идет от нуля.
Для освобождения памяти из-под динамического массива:
а) либо присвоить nil переменной:
A:=nil;
B:=nil;
б) либо — вызвать процедуру Finalize:
Finalize(A);
Finalize(B);
Пример:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Button3: TButton;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
A: array of string;
B: array of array of integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
close
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SetLength(A,100);
SetLength(B,10,20);
Label1.caption:='Память выделена';
end;
procedure TForm1.Button3Click(Sender: TObject);
var s:string;
begin
A[99]:='Ok';
B[9,19]:=7;
Label3.caption:=A[99];
str(B[9,19],s);
Label5.caption:=s;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
A:=nil;
Finalize(B);
Label1.caption:='Память освобождена';
end;
end.
Дата публикования: 2014-11-29; Прочитано: 269 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!