Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.223.73] |
|
Сообщ.
#1
,
|
|
|
Не удается добавить массив внутри функции, хотя за пределами функции получается добавить?
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; function getAnim(x,y,width,height,frame:Integer):Integer; var Form1: TForm1; head:array[1..2,1..4] of Integer= ( (0, 0, 10, 9), (10, 0, 10, 9) ); implementation {$R *.dfm} function getAnim(x,y,width,height,frame:Integer):Integer; var CPlace:array[1..5,1..4] of Integer; begin CPlace:= ((0, 0, 85, 37), (85, 0, 85, 37), (170, 0, 85, 37), (255, 0, 85, 37), (340, 0, 85, 37) ); end; procedure TForm1.FormShow(Sender: TObject); begin getAnim(100,100,85,37,5); end; end. |
Сообщ.
#2
,
|
|
|
Локальные переменные в функции определены таким образом, что существуют они только во время выполнения функции. Переменные же вне функции существуют постоянно (глобально) и могут быть заранее инициализированы. Для локальных переменных функции нельзя использовать инициализатор как в глобальных переменных. Надо каждому элементу массива присваивать значение отдельно в циклах или можно объявить глобальную константу, инициализировать её и потом присвоить её локальной переменной в функции. Но для константы использующей в типе массивы понадобится дополнительно объявить пользовательский тип данных, иначе присвоение будет невозможно.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TCPlace = array[1..5,1..4] of Integer; TForm1 = class(TForm) procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; function getAnim(x,y,width,height,frame:Integer):Integer; const getAnimCPlaceInitialization: TCPlace = ((0, 0, 85, 37), (85, 0, 85, 37), (170, 0, 85, 37), (255, 0, 85, 37), (340, 0, 85, 37) ); var Form1: TForm1; head:array[1..2,1..4] of Integer= ( (0, 0, 10, 9), (10, 0, 10, 9) ); implementation {$R *.dfm} function getAnim(x,y,width,height,frame:Integer):Integer; var CPlace:TCPlace; begin CPlace:= getAnimCPlaceInitialization; end; procedure TForm1.FormShow(Sender: TObject); begin getAnim(100,100,85,37,5); end; end. |