Вверх ↑
Этот топик читают: Гость
Ответов: 80
Рейтинг: 4
#136: 2013-06-10 17:42:09 ЛС | профиль | цитата
Меня долго не было. Сегодня вот сел переписывать программу и буквально на лету исправил все недоработки. Основная проблема теперь в процессе компиляции и
Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта.
#pas
var

x,y: array [1..10000] of integer;
m,k,Xmax,Ymax:integer;
ring,rings,L:byte;

begin

read(rings);//считываем количество кольц
readln(L);//коэффицент увеличения, принадлежит натуральным числам

for ring:=1 to rings do //проход по кольцам
begin
m:=1;k:=3*ring*ring-3*ring; //сумма глобальных номеров до кольца

while (m<=(2*ring+1)) do

begin
if (m<=(ring+1)) then

begin
y[k+m]:=-1*25*L*ring;
x[k+m]:=L*(14*ring+28*(1-m);
y[k+3*ring+m]:=-y[k+m];
x[k+3*ring+m]:=-x[k+m];
end

else

begin
y[k+m]:=25*L*((-2)*ring+m-1);
x[k+m]:=L*14*(1-m));
y[k+3*ring+m]:=-y[k+m];
x[k+3*ring+m]:=-x[k+m];
y[k+4*ring-m+2]:=-y[k+m];
x[k+4*ring-m+2]:=x[k+m];
y[k+7*ring-m+2]:=y[k+m];
x[k+7*ring-m+2]:=-x[k+m];
end;
m:=m+1;
end;
end;

k:=3*rings*(1+rings);
Xmax:=(27*rings+13)*L+15;
Ymax:=(24*rings+15)*L+15;

for m:=1 to k do
begin
writeln(x[m]+Xmax);
writeln(y[m]+Ymax);
end;
end.

Помогите исправить ошибку + перенести программу в хиазм, как код.

>Вылечилось заданием границ массива! А динамически его нельзя никак задавать?
>>Перенесите в хиазм в виде кода вставки, пожалуйста.
------------ Дoбавленo в 17.42:
Неужели никто не поможет оформить в Inline Cod?
карма: 0

0
файлы: 1code_31203.txt [1KB] [289]
Разработчик
Ответов: 26155
Рейтинг: 2127
#137: 2013-06-10 18:03:25 ЛС | профиль | цитата
R2D2 писал(а):
Неужели никто не поможет оформить в Inline Cod?

А поточнее можно -- что задается в качестве входных параметров, и что надо получить на выходе
------------ Дoбавленo в 18.03:
R2D2 писал(а):
А динамически его нельзя никак задавать?

Почему нельзя, можно

Да, кстати, а не трудно было бы накидать проверчную схемку, в которую будет вставляться этот модуль с указанием начальных параметров в полях ввода и куда это предполагается выводить
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#138: 2013-06-10 18:10:00 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2021-05-21 08:41:17
карма: 0

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#139: 2013-06-10 18:12:52 ЛС | профиль | цитата
37.45.214.88, а у тебя такой проверочной схемки нет, случаем
Откуда-то эти параметры беруться, и куда-то же выводится результат
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#140: 2013-06-10 18:18:19 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2021-05-21 08:41:17
карма: 0

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#141: 2013-06-10 18:23:48 ЛС | профиль | цитата
37.45.214.88 писал(а):
Может отдать ему схему чтоб не мучился?

Тут уж смотри сам
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#142: 2013-06-10 18:28:48 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2021-05-21 08:41:18
карма: 0

0
Ответов: 80
Рейтинг: 4
#143: 2013-06-10 18:41:08 ЛС | профиль | цитата
Мне проще программу написать, чем в хиазме подобное собирать. У меня все таки нет такого опыта, как у вас. И элементами схемы я еще не мыслю.
Входящие, как видно по коду: rings, L. Исходящие: (Xmax+x[m]), (Ymax+y[m]).

nesco писал(а):
Почему нельзя, можно

Как?

37.45.214.88 писал(а):
А что у вас на элементах не получилось сделать

Не получилось. Логика программы, для меня, получается слишком сложной на компонентах хиазма. Да и я думаю, что с помощью Inline Code получится быстрее.

Вопрос 2. Как поместить текст в центр хекса?
Вопрос 3. Как и куда записывать некоторые настройки и параметры? Что для этого используется из функционала HiAsm?
Вопрос 4. Что лучше использовать для организации больших объемов информации, по типу БД?
------------ Дoбавленo в 18.37:
Схема рабочая.
------------ Дoбавленo в 18.41:
nesco, можно еще сделать что-то вроде события, происходящего по завершению процесса. Но это по желанию.
карма: 0

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#144: 2013-06-10 18:45:02 ЛС | профиль | цитата
R2D2, ты это, тестовую схемку накаидай все же
карма: 22

0
Ответов: 80
Рейтинг: 4
#145: 2013-06-10 19:00:10 ЛС | профиль | цитата
Отправил ЛС.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#146: 2013-06-10 19:15:40 ЛС | профиль | цитата
code_31212.txt
Наведи порядок со скобками (строки я отметил)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_31212.txt [1.8KB] [273]
Разработчик
Ответов: 26155
Рейтинг: 2127
#147: 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
Ответов: 80
Рейтинг: 4
#148: 2013-06-10 20:08:09 ЛС | профиль | цитата
Tad, nesco, Спасибо! Жаль только в схеме проблема.
code_31213.txt

Вообще, странно... не хочет он ничего рисовать и все, хотя мой код работает 100%.

карма: 0

0
файлы: 1code_31213.txt [5.1KB] [353]
Ответов: 16884
Рейтинг: 1239
#149: 2013-06-10 20:14:13 ЛС | профиль | цитата
R2D2 писал(а):
code_31213.txt
Выкладываешь схему - проверь выложенное.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:R2D2
Ответов: 80
Рейтинг: 4
#150: 2013-06-10 20:17:34 ЛС | профиль | цитата
http://forum.hiasm.com/forum_serv.php?q=56&id=3543
Чистая программа, которую вы Tad и nesco переписали.
Tad, да я смотрю, смотрю и все вроде правильно!
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)