Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.24;
Скачать: CL | DM;

Вниз

Взбесившийся указатель   Найти похожие ветки 

 
VDen   (2002-06-12 20:17) [0]

Есть указатель - глобальный, в Initialization модуля он обnilяется,затем начинает указывать на какой-то объект.
После этого вызывается процедура, где этот указатель используется и программа намертво виснет.
Как выяснилось указатель при входе в процедуру просто уничтожается. Такого не было пока не расставил комментарии в тексте программы(прямо полтергейст какой-то). Объясните, пожалуйста, почему и отчего так происходит.


 
Sasha9 ©   (2002-06-12 21:11) [1]

кусок кода, если можно


 
Anatoly Podgoretsky ©   (2002-06-12 21:23) [2]

Страшные вещи ты рассказываешь


 
YurijNT   (2002-06-12 22:28) [3]

Бывают загадки природы и у Delphi. В таких случаях я выясняю на каком операторе виснет (вставляю тросировочные выводы) и делаю "пробуксовку" программе (Delay или Application.ProcessMessage).

Но в любом случае брось кусок кода - возможно ошибка.


 
VDen   (2002-06-13 09:47) [4]

function GetChain(num: integer): PTLogic;{это класс, на объект которого указывает BegL}
var i: integer;
p: PTLogic; //Дополнительный указатель
begin
P := BegL; //Здесь обнаруживаю, что BegL ни на что не указывает
if num > EndL^.GetIndex then AViol("Main.pas, GetChain proc");
for i := 2 to num do
p := p^.SimplePtr;// указатель на следующий элемент цепочки
Result := p;
end;

Вот код. Извините что только сегодня.


 
Виктор Щербаков ©   (2002-06-13 09:52) [5]

Еще неплохо посмотреть на код, где:
> в Initialization модуля он обnilяется,затем начинает указывать
> на какой-то объект.



 
VDen   (2002-06-13 10:54) [6]

Function Createlogic: PTLogic;
begin
result:=TLogic.Create;
with result do begin
Name:="Log0";
Parent:=ViewForm;
SetBounds(25,25,30,30);
end;
end;

...

Initialization
BegL:=nil;
BegL:=CreateLogic;


 
Игорь Шевченко ©   (2002-06-13 10:56) [7]

Ночной кошмар программиста :-)


 
Digitman ©   (2002-06-13 11:15) [8]

Чудес не бывает !

Предже чем выяснять детали касаемые собственно вопроса, поясни-ка, что это за форма такая ViewForm, которая в момент работы блока инициализации (!) модуля уже существует ? Ты же ссылаешься на нее в строчке Parent:=ViewForm ! Или это вообще не форма, а несто иное ?

Где, статически ли и как объявлена переменная BegL ? Где, в какой момент и как вызывается GetChain() ?


 
Игорь Шевченко ©   (2002-06-13 11:23) [9]


> BegL:=nil;
> BegL:=CreateLogic;


Это на случай, если первой или второе присваивание не сработает ? :-)


 
Виктор Щербаков ©   (2002-06-13 11:36) [10]

Если BegL объявлена как статическая, то в строчке
BegL:=nil;
и необходимости-то нет.
А вот функцию Createlogic я б помучил отладчиком. Ну это для начала.



Страницы: 1 вся ветка

Текущий архив: 2002.06.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-77430
Vladimir Prokofiev
2002-06-11 11:46
2002.06.24
Про создание AVI-файлов прямо из Delphi


3-77285
sst
2002-05-30 13:49
2002.06.24
Добавление поля в базу данных


14-77578
Помогите
2002-05-21 10:44
2002.06.24
Не добавляет вопросы в форум


1-77403
do_the_right_thing
2002-06-13 19:55
2002.06.24
скроллинг


6-77522
elefant
2002-04-15 09:52
2002.06.24
Мастера ПОМОГИТЕ!!!