
Итак, в модуле создана структура данных, т.е. некий "стэк" с возможностью перемещения по нему назад и вперед. На начало этой структуры у меня есть ссылка, которую надо вернуть из подпрограммы.
Вот начало модуля с описанием типов и переменных (которые, по моему, видны в программе, которая вызывает модуль)
- Код: Выделить всё
- 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;" возникает ошибка при исполнении.
структура создается верно, я в модуле запускал этот цикл и все было хорошо



