07/05/15 12:10:11
この2つを使って、コルーチンを起動してみる
起動される簡単なルーチン
procedure MyProg;
var i:Integer;
begin
allocConsole;
i:=0;
while true do begin
writeln('MyProg ',CoGate(i));
inc(i);
end;
end;
起動するルーチンは フォームにメモと、ボタンを貼り付けて
var Stack:array[0..2000] of integer; // スタック用の領域確保の為だけ
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
CoSetup(Stack[1000],MyProg);
for i:=100 to 110 do begin
Memo1.Lines.Add( format('%5d',[CoGate(i)]) );
end;
end;
これを実行してトレースしてゆくと、MyProgと Buttin1を交互に、互いに変数を交換しあって動くのが判ると思う