Итак, в модуле создана структура данных, т.е. некий "стэк" с возможностью перемещения по нему назад и вперед. На начало этой структуры у меня есть ссылка, которую надо вернуть из подпрограммы.
Вот начало модуля с описанием типов и переменных (которые, по моему, видны в программе, которая вызывает модуль)
- Код: Выделить всё
unit gsc;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
type
TData=^DataRecord;
DataRecord= record
sigma,
t3,
t2,
R,
S,
F,
invZ: real;
z,
dz_dt3,
dz_dt2,
q,
b,
y,
inv_z,
g1,
g2: array[1..3] of real;
l:array[1..3,1..3]of real;
up,
down,
sim1,
sim2,
sim3: pointer;
end;
TSim= ^SimRecord;
SimRecord= record
belt,
Umdl,
y_n,
y_i,
z_y:array[1..10] of real;
n:integer;
data: pointer
end;
function SimulationX( stt2, stt3, sti, sist: integer): TData;
var
A,_A,A_: TData;
Sim: TSim;
так вот, в программе я вызываю это вот так
- Код: Выделить всё
procedure Tsimulation.CalculateClick(Sender: TObject);
var
i, j, k: integer;
outf: text;
begin
B:=SimulationX(t2.Value, t3.Value, Sigma.Value, VSigma.Value);
for i:=1 to 27 do begin
while B^.Down<>NIL do B:=B^.Down;
и тут "while B^.Down<>NIL do B:=B^.Down;" возникает ошибка при исполнении.
структура создается верно, я в модуле запускал этот цикл и все было хорошо