![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 26
|
![]()
День добрый.
![]() Ни в одном из прочитанных мною мануалов не было написано, что в процедуре нельзя работать с массивами. А потому решил написать пример (под ту программу, которую пытаюсь написать). Подскажите пожалуйста, почему возникает ошибка и что делать ?))) unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; s,e,f :integer ; mas1 : array of array of integer ; //Задаётся двумерный массив implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Setlength(mas1, 50 , 50 ); //Устанавливается его размерность. end; function rrr ( var e,f,rrr :integer):integer ;// вот тут ошибка Identifier redeclared 'mas1' // тут фомирутеся функция. var - было выбрано потомучто все эти // переменные являются как входящими, так и исходящими. begin e:=2; f:=4; mas1[e,f]:= f+1 ; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text := IntToStr(mas1[5,5]); end; end. Возможно ли также в процедуре задавть различные цыклы с двумерными массивами ? С уважением к Вам. Альберт. ![]() Последний раз редактировалось Albert2008; 11.08.2008 в 13:57. |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Потому что ты в корне неверно создал пример
во-первых желательно обьявлять процедуру так: Код:
Код:
I'm learning to live...
Последний раз редактировалось Stilet; 11.08.2008 в 14:04. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 26
|
![]()
procedure TForm1.FormCreate(Sender: TObject);
begin Setlength(mas1, 50 , 50 ); end; function rrr ( var e,f :integer; mas1 :ab):integer ; begin if (high(mas1)<=e) and((high(mas1[e])<=f)) then begin e:=2; f:=4; mas1[e,f]:= 5 ; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text := IntToStr(mas1[5,5]); end; end. Ошибок вроде нету, и код скомпилировался но вот в результате он почему-то выводит "0" вместо "5". Ещё есть надпись: Return value of function 'rrr' might be undefined. Подскажите пожалуйста - чего ещё не хватает ? Последний раз редактировалось Albert2008; 11.08.2008 в 15:01. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 26
|
![]()
Кстати если перед
Edit2 вставить строку rrr(e,f,mas1); типа вызов функции, то он и в неё поставит ошибку.... |
![]() |
![]() |
![]() |
#5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 26
|
![]()
1.
При добавлении rrr(e,f,mas1); перед Edit2 Возникает ошибка: Return value of function 'rrr' might be undefined 2. Сымсле не в том что e:=2; f:=4; mas1[e,f]:= 5 или Edit2.Text := IntToStr(mas1[5,5]); написать. Даже если написать e:=2; f:=4; mas1[e,f]:= 5 Все равно нифига не будет. Вопрос в том - почему он это выходное Return value of function 'rrr' считает каким-то не тем ?И как сделать , чтобы было тем. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 21.08.2007
Сообщений: 89
|
![]()
Return value of function 'rrr' might be undefined
- значит что функция должна возвращать значение, если это не так, то это процедура. з.ы. перезалей masinfunc.jpg если ещё нужно, потому как там без бинокля не разобраться
подписываюсь
Последний раз редактировалось Банзай; 11.08.2008 в 16:38. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 26
|
![]()
В том-то и фишка. Что функция должна возвращать значение.Для этого и применятеся var. А именно значение это лежит в mas1[e,f]
На картинку забей. Она не в тему. |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]()
Чтобы функция возвращала результат, нужно не var, а волшебное слово result. Примерно так:
Код:
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с массивами | mager | JavaScript, Ajax | 5 | 27.08.2008 22:02 |
Stringgrid, Procedure, cells[m,n]:=DynMas[a,b]. Очередной вопрос начинающего (#003) | Albert2008 | Компоненты Delphi | 4 | 04.08.2008 12:00 |
Procedure,function,Stringgrid (#004) Очередной вопрос начинающего. | Albert2008 | Компоненты Delphi | 4 | 01.08.2008 21:30 |
Stringgrid, cells[m,n] и двумерные массивы.(#002) Очередной вопрос начинающего. | Albert2008 | Компоненты Delphi | 4 | 28.07.2008 19:02 |
Работа с массивами в C# | MaskEdit | Общие вопросы .NET | 3 | 17.05.2008 17:59 |