Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 14:01   #1
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию Delphi7 создание формы Runtime, constants cannot be used as open array arguments

Я пока только тренируюсь, создал процедуру для создания новой формы:
Код:
procedure NewForm(Sender:TObject; Name: string; var Visible: boolean;

 const Position: array [1..2] of integer, Size: array[1..2] of integer,

 Properties: array of integer );

var

NewForm: TForm;

begin

NewForm:=TForm.Create(Self);

NewForm.Caption:=Name;

NewForm.Top:=Position[0];

NewForm.Left:=Position[1];

NewForm.Height:=Size[0];

NewForm.Width:=Size[1];

NewForm.Visible:=Visible;

NewForm.Parent:=Application;

NewForm.Show;

end;
и пытаюсь её запустить так:

Код:
procedure TMainForm.clbButtonClick(Sender: TObject);

begin

NewForm(Sender,'Kukish',true,[500,500],[300,200],nil);

end;
ругается constants cannot be used as open array arguments, курсор стоит после true
я ума не приложу что не так, вроде true не передаётся в open array она должна в булевскую переменную передаваться
BoozZzilla вне форума Ответить с цитированием
Старый 29.03.2011, 14:45   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

константа не может передаваться как var параметр

Код:
var
  visible: boolean;
begin
  visible := True;
  NewForm(Sender,'Kukish', visible, ...
или убрать var перед Visible в заголовке процедуры, он там даром не нужен.

Код:
NewForm:=TForm.Create(Self);
какой ещё там Self

Код:
Position: array [1..2] of integer
Специально для этого есть запись TPoint.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 29.03.2011 в 14:51.
veniside вне форума Ответить с цитированием
Старый 29.03.2011, 17:27   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

const Position: array [1..2] of integer, Size: array[1..2] of integer,
[100, 100] описание такой конструкции соответствует
: array of integer
но не : array [1..2] of integer

в вызове тоже должен быть некий массив (mposition) с ТОЧНО таким же описанием. а не [100,100]

var
mposition: array [1..2] of integer;

m[1]:=100;
m[2]:=100;
NewForm(..., mposition, ....);

либо как показано выше
либо изменить описание параметра на position: array of integer
и проверять внутри границы преданного массива.
либо как сказал veniside заменить на TPoint самый удобный вариант.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание RunTime объектов в DLL MsDos Общие вопросы Delphi 2 14.09.2010 01:13
Runtime error - array of string как атрибут класса ElSnake Помощь студентам 1 08.05.2010 19:51
Runtime runtime = Runtime.getRuntime(); Pti44ka Общие вопросы по Java, Java SE, Kotlin 1 22.11.2009 10:45
Создание dll runtime mayn Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 20.05.2009 17:06
Формы в Delphi7 LeoN Общие вопросы Delphi 13 25.01.2007 19:28