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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2014, 22:57   #11
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от XE5 Посмотреть сообщение
Нельзя менять длину массива, переданного в процедуру, как параметр. Уберите из имени процедуры массивы, и обращайтесь к ним напрямую. Всё будет работать. Либо так.

function TForm3.CreateGB(Num: Integer; TB: TsTabSheet; var GB: Array of TsGroupBox; Ed: Array of TsEdit): string;
Нет, напрямую нельзя, у меня несколько массивов, и нужно для каждого создавать GroupBox, Edit. Т.е. нужно будет создавать тогда 2 функции.
var к сожалению не работает.
PaHaNjkee вне форума Ответить с цитированием
Старый 25.03.2014, 23:01   #12
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Попробывал так:
Код:
procedure TForm3.CreateGB(Num, Max: Integer; TB: TsTabSheet; var GB2: array of TsGroupBox; Ed: array of TsEdit);
var
  i: integer;
  tmp: String;
  GB: Array of TsGroupBox;
begin
  for i := 1 to Length(GB2) do
  GB[i] := GB2[i];
  SetLength(GB, Length(GB) + 1);
Странно, заработало.
Но опять же ошибка на Top := ... Опять не существует ячейки памяти

Последний раз редактировалось PaHaNjkee; 25.03.2014 в 23:04.
PaHaNjkee вне форума Ответить с цитированием
Старый 25.03.2014, 23:01   #13
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

выбросьте эти ненужные параметры, тогда заработает

Цитата:
Странно, заработало
это только кажется
eval вне форума Ответить с цитированием
Старый 25.03.2014, 23:06   #14
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
Сообщение от PaHaNjkee Посмотреть сообщение
у меня несколько массивов
Я же говорю, что Вы меня не слышите. Все Ваши массивы можно объединить в единый массив Record
По поводу передачи массивов в процедуру совсем забыл нюанс. Можно передавать только через костыль в виде дополнительного типа. Короче геморой. Проще работать с единым глобальным массивом Record.

Последний раз редактировалось XE5; 25.03.2014 в 23:13.
XE5 вне форума Ответить с цитированием
Старый 25.03.2014, 23:09   #15
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Ошибаетесь
->
Цитата:
Но опять же ошибка на Top := ... Опять не существует ячейки памяти
, ку ?
eval вне форума Ответить с цитированием
Старый 25.03.2014, 23:14   #16
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
procedure TForm3.CreateGB(Num, Max: Integer; TB: TsTabSheet; var GB2: array of TsGroupBox; Ed: array of TsEdit);
var
i: integer;
tmp: String;
GB: Array of TsGroupBox;
begin
for i := 1 to Length(GB2) do
GB[i] := GB2[i];
SetLength(GB, Length(GB) + 1);
мне вот еще интересно, автор то сам понимает, что он тут понаписал?
eval вне форума Ответить с цитированием
Старый 25.03.2014, 23:16   #17
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Вон оно где собака порылась. Запутался в собственных переменных. Ну пусчай сам распутывается
XE5 вне форума Ответить с цитированием
Старый 25.03.2014, 23:19   #18
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
мне вот еще интересно, автор то сам понимает, что он тут понаписал?
Я еще изучаю азы дельфи, если честно я сам не понял что написал
Лишь бы найти верное решение проблемы.
PaHaNjkee вне форума Ответить с цитированием
Старый 25.03.2014, 23:23   #19
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Лишь бы найти верное решение проблемы.
так надо и начинать с того что озвучить проблему, а не рассказывать свое кривое решение
eval вне форума Ответить с цитированием
Старый 25.03.2014, 23:24   #20
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

PaHaNjkee Открою Вам страшную тайну. Вашу процедуру без проблемно можно написать так, что она вообще будет работать без передаваемых в неё параметров
Код:
procedure TForm1.BlaBla;
и без массивов в var процедуры. Так что учитесь. Умение приходит с практикой.
XE5 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРоблема с функцией! dpmkh Общие вопросы Delphi 6 12.10.2012 18:42
проблема с функцией Madmaxisss Паскаль, Turbo Pascal, PascalABC.NET 5 23.08.2012 13:46
проблема с функцией Си blain Помощь студентам 1 19.02.2012 21:06
Проблема с функцией MeTeOpA C# (си шарп) 6 11.07.2011 00:07