|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Видимость процедуры и ее переменных
У меня возник следующий вопрос: мне нужно реализовать две процедуры (coef , Prost) так, чтобы вторая процедура (Prost) использовала результаты (A,B,C,D), вычисленные благодаря первой процедуре (coef). Массивы u, unew глобальные. Значения m,n берутся с основной программы (procedure Button1Click (Sender: TObject)). Вопрос: как сделать так, чтобы процедура Prost могла видеть переменные A,B,C,D (как я могу передать значения A,B,C,D процедуре Prost)?. Процедуру coef не можна реализовать в процедуре Prost!!!
Пример: Код:
Procedure coef (k,dt,dx,dy :single; ii,jj :integer); var A,B,C,D; single; begin A:=k*dt/dx; C:=A; B:=-2*A/dy; D:=u[ii,jj]+unew[ii,jj]; End; //------------------------------------------------------------------------- Procedure Prost (m,n:integer) Var k,dt,dx,dy :single; ii,jj,intr :integer; Mas: array // этот массив только для этого примера нужен, поэтому я его даже не описую begin dt:=1; dx:=2; dy:=3; k:=1; itr:=0; for ii:=1 to n do begin for jj:=1 to m do coef (k,dt,dx,dy,ii,jj); itr:=itr+1; end; for ii:=1 to n do Mas[ii,jj]:=A+B+C/D; end; procedure Button1Click (Sender: TObject) ……. ……. ……. Последний раз редактировалось lmikle, 04.12.2012 в 03:03. |
#2
|
|||
|
|||
сделай абцд глобальными.
или сделай coef как не процедукру,а функцию и она будет возвращать значения (в виде массива например). чтоб функция возвращала массив смотри пример: Код:
type TForm1 = class(TForm) TntButton1: TTntButton; procedure TntButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type massiv=array of integer; var Form1: TForm1; implementation {$R *.dfm} function coef:massiv; begin SetLength(Result,4); Result[1]:=1; //А Result[2]:=2; //B Result[3]:=5; //C Result[4]:=100; //D end; procedure TForm1.TntButton1Click(Sender: TObject); var x:massiv; a,b,c,d:Integer; begin x:=coef; a:=x[1]; b:=x[2]; c:=x[3]; d:=x[4]; ShowMessage(IntToStr(a)+' '+IntToStr(b)+' '+IntToStr(c)+' '+IntToStr(d)); end; Последний раз редактировалось Snake22, 04.12.2012 в 00:58. |
Этот пользователь сказал Спасибо Snake22 за это полезное сообщение: | ||
Басота (04.12.2012)
|