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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2015, 18:04   #1
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию Передача значения массива в процедуру

вывод вот такой -

Цитата:
2
5
7
0
3
5
7
0
3
5
8
0
3
6
8
0
3
6
8
0
3
7
8
0
3
7
8
0
3
8
8
0
3
8
8
0
3
9
8
0
3
9
8
0
3
9
9
0
3
10
9
0
при таком коде -
Код:
procedure   MassiveOfSteps(UU1,UU2,UU3: Integer; var  ArrOfsteps:  array  of integer);
begin
 ArrOfsteps[masI]:=UU1;
 inc(masI);
 ArrOfsteps[masI]:=UU2;
 inc(masI);
 ArrOfsteps[masI]:=UU3;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
masI:=0;
цикл 
                 изменяю xyz 
                 MassiveOfSteps(x,y,z,ArrOfsteps[masI]);
                 изменяю x y z 
                 MassiveOfSteps(x,y,z,ArrOfsteps[masI]); 
 
и тд 
end;
откуда берется этот 0 между заходами в процедуру??

Последний раз редактировалось Stilet; 05.04.2015 в 19:56.
ayPinki вне форума Ответить с цитированием
Старый 05.04.2015, 18:41   #2
lexaltd
Форумчанин
 
Регистрация: 21.07.2008
Сообщений: 192
По умолчанию

Скорей всего длина массива ArrOfsteps 4 ,а не 3

Покажите как вы объявили массив ArrOfsteps - динамический он или нет , и как вы выводите данные из него.

Последний раз редактировалось Stilet; 05.04.2015 в 19:56.
lexaltd вне форума Ответить с цитированием
Старый 05.04.2015, 19:54   #3
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от lexaltd Посмотреть сообщение
Скорей всего длина массива ArrOfsteps 4 ,а не 3

Покажите как вы объявили массив ArrOfsteps - динамический он или нет , и как вы выводите данные из него.
о, люди!)
так объявляю -
Код:
  ArrOfsteps:  array of  integer;
еще такая строка есть

Код:
SetLength(ArrOfsteps, 500);
а вывожу вот так
Код:
 for masi := 0 to Length(ArrOfsteps) do
  begin
  memo1.lines.add(inttostr(ArrOfsteps[masi])+' ');
  end;
ayPinki вне форума Ответить с цитированием
Старый 05.04.2015, 20:41   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну даешь. Объявил параметр как открытый массив, а передаешь в качестве аргумента элемент массива. Туда и передается массив единичной размерности. И куда оно там пишет в процедуре, одному компьютерному богу известно. Прога должна загнутся, повезло, но что-то испортила. Присвой по индексу 400, скорее всего загнется
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.04.2015, 20:53   #5
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну даешь. Объявил параметр как открытый массив, а передаешь в качестве аргумента элемент массива. Туда и передается массив единичной размерности. И куда оно там пишет в процедуре, одному компьютерному богу известно. Прога должна загнутся, повезло, но что-то испортила. Присвой по индексу 400, скорее всего загнется
уважаемый, скажите как этого избежать т.е. сделать так чтобы работало стабильно и понятно?
по делу мне не нужен именно открытый массив, мне нужен максимально большой обычный одномерный массив.
а я тут подумал, его не обязательно передавать, он же у меня объявлен для всей проги, мб удалить его из названия процедуры?

Последний раз редактировалось ayPinki; 05.04.2015 в 21:01.
ayPinki вне форума Ответить с цитированием
Старый 05.04.2015, 21:11   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

если параметром обращайся так MassiveOfSteps(x,y,z,ArrOfsteps)
Цитата:
а я тут подумал, его не обязательно передавать, он же у меня объявлен для всей проги, мб удалить его из названия процедуры?
Тоже можно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.04.2015, 21:57   #7
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
если параметром обращайся так MassiveOfSteps(x,y,z,ArrOfsteps)
Тоже можно
Код:
 procedure MassiveOfSteps(UU1,UU2,UU3: Integer );
вот так решался вопрос... просто не в моих силах такую тонкость было увидеть.
но если мы всё можем так "объявить для всей программы" то какой смысл передавать в названии именно одни параметры а не другие ?
ayPinki вне форума Ответить с цитированием
Старый 05.04.2015, 22:02   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Потому что так делать это зло, и чем больше и сложнее программа, тем злее. Самому же все тяжелей будет в ней разбираться и ошибки искать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.04.2015, 22:05   #9
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Потому что так делать это зло, и чем больше и сложнее программа, тем злее. Самому же все тяжелей будет в ней разбираться и ошибки искать
извините, но "так" это как?)
ayPinki вне форума Ответить с цитированием
Старый 05.04.2015, 22:22   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так это - "объявить для всей программы"
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Передача параметров в процедуру *stRong* Помощь студентам 1 30.05.2012 19:15
ПЕРЕДАЧА МАССИВА В ПРОЦЕДУРУ ЧЕРЕЗ СПИСОК ФОРМАЛЬНЫХ ПАРАМЕТРОВ. sifa Помощь студентам 1 29.11.2011 22:13
передача массива записей в процедуру lionbeast Помощь студентам 0 13.01.2011 19:03
Передача массива в процедуру... nXs Общие вопросы Delphi 3 12.08.2010 16:40
передача массива в процедуру Gash Общие вопросы Delphi 1 01.02.2009 00:30