Вверх ↑
Разработчик
Ответов: 26164
Рейтинг: 2127
#1: 2013-06-10 19:41:19 ЛС | профиль | цитата
В принципе, я немного опоздал, но тоже выложу. Я посчитал, что событие лучше сделать одно, а координаты вывести как переменные. Получилось почти то же самое, только с заверщающим событием. Да и скобки я поправил, может, неправильно, но пусть уже сам смотрит.

Add(InlineCode,13784051,266,189)
{
WorkPoints=#7:doStart|
EventPoints=#8:onResult|5:onEnd|
VarPoints=#2:_X|2:_Y|
DataPoints=#6:_Rings|2:_L|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|21: fX, fY: integer;|9: public|44: onResult, onEnd, _Rings, _L: THI_Event;|52: procedure doStart(var _Data:TData; Index:word);|47: procedure _X(var _Data:TData; Index:word);|47: procedure _Y(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.doStart;|3:var|37: x, y: array [1..10000] of integer;|29: m, k, Xmax, Ymax: integer;|24: ring, rings, L: byte;|5:begin|63: rings := ToIntegerEvent(_Rings); //считываем количество колец|82: L := ToIntegerEvent(_L); //коэффицент увеличения, принадлежит натуральным числам|0:|47: for ring := 1 to rings do //проход по кольцам|7: begin|81: m := 1; k := 3 * ring * ring - 3 * ring; //сумма глобальных номеров до кольца|34: while (m <= (2 * ring + 1)) do|9: begin|31: if (m <= (ring + 1)) then|11: begin|39: y[k + m] := -1 * 25 * L * ring;|51: x[k + m] := L * (14 * ring + 28 * (1 - m));|39: y[k + 3 * ring + m] := -y[k+m];|39: x[k + 3 * ring + m] := -x[k+m];|9: end|10: else|11: begin|51: y[k + m] := 25 * L * ((-2) * ring + m - 1);|37: x[k + m] := L * 14 * (1 - m);|41: y[k + 3 * ring + m] := -y[k + m];|41: x[k + 3 * ring + m] := -x[k + m];|45: y[k + 4 * ring - m + 2] := -y[k + m];|45: x[k + 4 * ring - m + 2] := x[k + m];|45: y[k + 7 * ring - m + 2] := y[k + m];|45: x[k + 7 * ring - m + 2] := -x[k + m];|10: end;|17: m := m + 1;|8: end;|6: end;|31: k := 3 * rings * (1 + rings);|35: Xmax:=(27 * rings + 13) * L + 15;|35: Ymax:=(24 * rings + 15) * L + 15;|0:|18: for m:=1 to k do|7: begin|22: fX := x[m] + Xmax;|22: fY := y[m] + Ymax;|26: _hi_onEvent(onResult);|6: end;|21: _hi_onEvent(onEnd);|6:end; |0:|25:procedure THiAsmClass._X;|5:begin|23: dtInteger(_Data, fX);|4:end;|0:|25:procedure THiAsmClass._Y;|5:begin|23: dtInteger(_Data, fY);|4:end;|0:|4:end.|
}

карма: 22

0