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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2011, 13:50   #11
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Более того, нельзя объявлять типы внутри процедур!

можно

> Также нельзя писать процедуры внутри других процедур:

можно

> Процедуры должны писАться отдельнo

не должны.

Зачем писать о том, чего не знаете? Код ниже прекрасно работает.

PHP код:
procedure TForm1.FormCreate(SenderTObject);
type
  myArray 
= array[1..101..10of real;

  
procedure copyArray(const amyArray; var bmyArray);
  var
    
ijInteger;
  
begin
    
for := 1 to 10 do
      for 
:= 1 to 10 do
        if (
a[ij]) then
          b
[ij] := 0
        
else
          
b[ij] := a[ij];
  
end;

var
  
abmyArray;
begin
  
// fill a with data
  // ...
  //
  
copyArray(ab);
end
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 21.03.2011, 14:06   #12
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Честно скажу, не знал об этом...
Спасибо.
Цитата:
Зачем писать о том, чего не знаете?
Ну, ничего страшного с человеком не случилось оттого, что я ему это сказал. Просто если он этого не знает, он не запутается.
Это можно сравнить вот с чем.

Начинающий велосипедист уже пытается выполнить различные трюки на велосипеде, прыгать с трамплинов, ездить на переднем колесе. Из этого ничего хорошего не выйдет, он просто сам травмируется и/или сломает велосипед.

И вопрос:

Код:
procedure copyArray(const a: myArray; var b: myArray);
Зачем надо принимать массив A как константу? ИМХО, здесь это ни к чему, на выходе он всё равно не сможет измениться, если мы перед ним не написали Var

Последний раз редактировалось Вадим Мошев; 21.03.2011 в 14:09.
Вадим Мошев вне форума Ответить с цитированием
Старый 21.03.2011, 14:36   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Зделайте пожалст как правильно.
Цитата:
Но исправлюсь)
Ну дык? Исправляйся.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.03.2011, 14:53   #14
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

процедуры внутри другой процедуры обьявлять можно

аа, не заметил что другие уже написали
я читал что когда массивы передаешь как константы они
передаются быстрее, т.к. при передаче згачения,
переменные копируются в другую область памяти
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 21.03.2011 в 15:04.
New man вне форума Ответить с цитированием
Старый 21.03.2011, 15:24   #15
RONS
Новичок
Джуниор
 
Регистрация: 20.03.2011
Сообщений: 12
По умолчанию

Цитата:
type
TForm1 = class(TForm)
strngrd1: TStringGrid;
strngrd2: TStringGrid;
btn1: TButton;
procedure strngrd1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
Тут выдает ошибку.
RONS вне форума Ответить с цитированием
Старый 21.03.2011, 16:52   #16
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Зачем надо принимать массив A как константу? ИМХО, здесь это ни к чему, на выходе он всё равно не сможет измениться, если мы перед ним не написали Var
Если передать массив без const, то при каждом входе в процедуру в стеке будет создаваться его локальная копия. Думаю, не нужно рассказывать, как это отразится на производительности и как быстро исчерпается стек.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 21.03.2011, 21:38   #17
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

veniside, спасибо большое, буду знать...

RONS
Цитата:
procedure strngrd1Click(Sender: TObject);
Сдаётся мне, должно быть написано так: procedure stringrd1Click(Sender: TObject);
Вадим Мошев вне форума Ответить с цитированием
Старый 21.03.2011, 22:09   #18
RONS
Новичок
Джуниор
 
Регистрация: 20.03.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
veniside, спасибо большое, буду знать...

RONS


Сдаётся мне, должно быть написано так: procedure stringrd1Click(Sender: TObject);

В делфи 7 так и есть

strngrd1Click
RONS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив Didar Паскаль, Turbo Pascal, PascalABC.NET 3 11.02.2011 12:28
Двумерный массив Ole4ka Помощь студентам 2 15.06.2010 07:38
Двумерный массив Yara24 Помощь студентам 2 16.05.2010 19:50
Двумерный массив Юляшко Паскаль, Turbo Pascal, PascalABC.NET 4 27.04.2010 19:02
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40