0 / 0 / 0
Регистрация: 17.01.2013
Сообщений: 6
1

Создание адресного манипулятора

17.01.2013, 14:40. Показов 602. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем здравствуйте!

Пишу уже не одни сутки манипулятор. Сегодня не могу избавиться от одной ошибки. Если кто посоветует чего, буду очень признателен.

Ошибка:
вызвал класс исключения external:SIGSEGV

Часть кода:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
procedure dvizh1_1(Pleft, Ptop:integer);
 const Cleftgruz=536;
begin
  form1.timer1.Enabled:=true;
  if manip.left>Pleft then
  manip.left:=manip.left-1;
  if manip.left=Cleftgruz then begin
  form1.timer1.Interval:=0;
  gruz.Visible:=false;
  sleep(1000);
  end;
  form1.timer1.Interval:=1;
  if (manip.left=Pleft) and (not(manip.top=Ptop)) then
  manip.top:=manip.top-1;
  if (manip.Top=Ptop) and (manip.left=Pleft) then begin
  if gruzy[h]=nil then begin
  form1.timer1.Interval:=0;
  Create;
  sleep(1000);
  form1.timer1.enabled:=false;
  end;
  if gruzy[h]<>nil then begin
  form1.timer1.Interval:=0;
  Destroy1;
  sleep(1000);
  form1.timer1.enabled:=false;
  end;
  end;
  if manip.Top=Ptop then obr;
end;
 
procedure kuz;
var q:integer;
begin
if (manip.Left=592) and (manip.Top=488) then
  begin
  for q:=0 to (form1.ListBox1.Items.Count-1) do begin
  if (strtoint(form1.ListBox1.Items[q])=1) and (strtoint(form1.ListBox2.Items[q])=1) then
  begin
   Pleft:=CPleft[1]; Ptop:=CPtop[1];
   dvizh1_1(Pleft, Ptop);
   form1.ListBox1.Items.Delete(q);
   form1.ListBox2.Items.Delete(q);
  end;
  end;
  end;
  end;                
 
procedure aaa;
var k:integer;
begin
  if (manip.Left=592) and (manip.Top=488) then
  begin
  for k:=0 to (form1.ListBox1.Items.Count-1) do begin
if (strtoint(form1.ListBox1.Items[k])=1) and (strtoint(form1.ListBox2.Items[k])=2) then
  begin
Pleft:=CPleft[2]; Ptop:=CPtop[1];
dvizh1_1(Pleft, Ptop);
form1.ListBox1.Items.Delete(k);
form1.ListBox2.Items.Delete(k);
  end;
  end;
  end;
  end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2013, 14:40
Ответы с готовыми решениями:

Создание манипулятора
Как создать манипулятор, преобразующий массив символов при выводе из потока в массив тех же...

Создание 3D модели манипулятора
Здравствуйте, столкнулся с задачей которую не понимаю как решить :wall: Есть 3х мерная модель...

Создание (вернее, внедрение) манипулятора
Здравствуйте! Помогите пожалуйста! Лаба горит! Помогите создать манипулятор консольного...

Создание графических изображений с помощью манипулятора мыши
Здравствуйте! У меня тема задания по Си такая: Создание графических изображений с помощью...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32855 / 21189 / 8151
Регистрация: 22.10.2011
Сообщений: 36,441
Записей в блоге: 8
17.01.2013, 14:46 2
И зачем эта "часть кода"? Она бесполезна без указания строки, в которой происходит ошибка. Потому что в приведенной части все смешалось в кучу, и интерфейс, и логика. Запустить эту часть кода, не восстанавливая форму со всеми данными на ней, нельзя.

Либо прикрепляй проект со всеми данными, который можно запустить и получить ошибку, либо рассказывай, в какой строке эта ошибка происходит...
1
0 / 0 / 0
Регистрация: 17.01.2013
Сообщений: 6
17.01.2013, 15:07  [ТС] 3
ошибка в строке 177
Вложения
Тип файла: rar манипулятор.rar (2.98 Мб, 8 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32855 / 21189 / 8151
Регистрация: 22.10.2011
Сообщений: 36,441
Записей в блоге: 8
17.01.2013, 15:21 4
Не вижу в коде создания объекта manip... Где вызов конструктора (вот такой)
Pascal
1
manip := TShape.Create(Form1);
?

У тебя же manip не лежит на форме, а просто отдельный объект, значит, создать его - задача программиста... Аналогично и с другими объектами (я смотрю, там много TShape-ов, массивы прямо): перед тем, как обращаться к ним, их надо создать.
1
0 / 0 / 0
Регистрация: 17.01.2013
Сообщений: 6
17.01.2013, 15:36  [ТС] 5
Вот, удалил лишнюю часть, думал, что непринципиально важно. Это полная версия.
Вложения
Тип файла: rar манипулятор1.rar (2.98 Мб, 7 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32855 / 21189 / 8151
Регистрация: 22.10.2011
Сообщений: 36,441
Записей в блоге: 8
17.01.2013, 16:14 6
Сразу же - проблема, которая может приводить к вылету: процедура Destroy1. Во-первых, не надо использовать вызов Destroy, это говорится в любом учебнике Дельфи, в Лазарусе - то же самое, нужно использовать Free. Но и Free у тебя проблемы не решит. Замени строку вот на такую:

Pascal
1
2
3
4
5
Procedure Destroy1;
begin
  FreeAndNil(Gruzy[h]); // Мало того, что освободить, так еще и обнулить указатель !!!
  // Gruzy[h].Free; //.Destroy;
end;
, теперь проверка if gruzy[h]=nil then вернет True, и объект будет заново создан.
1
0 / 0 / 0
Регистрация: 17.01.2013
Сообщений: 6
17.01.2013, 19:06  [ТС] 7
Как можно сделать так, чтобы после создания gruzy, он не уничтожался при повторном введении значений?
Вложения
Тип файла: rar манипулятор2.rar (2.98 Мб, 5 просмотров)
0
17.01.2013, 19:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2013, 19:06
Помогаю со студенческими работами здесь

Просмотрщики разбивки адресного пространства
Народ, подскажите какую-нибудь утилитку, которая отображает как система разбивает всё адресное...

Конечность адресного пространства IPv4?
Помогите пожалуйста разложить все по полочкам в мозгу. Вот все шумели о том что скоро не будет...

Проверка адресного пространства ProbeForRead
Добрый день. Подскажите пожалуйста, если мы используем функцию ProbeForRead для проверки...

Расчет конфигурации и планирование адресного пространства
объясните мне что означает IP1-IP6 и IPbr, и если не трудно напишите что туда записать


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru