Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-77328
Abu
2002-06-10 16:29
2002.06.24
Проблемы с логикой ...


7-77645
BugMaker
2002-03-27 12:33
2002.06.24
Сервис


1-77497
Exploited
2002-06-12 17:58
2002.06.24
Запуск программы с ключом.


4-77697
ghost_by
2002-04-25 13:34
2002.06.24
Ловить запуск и завершение приложения?


8-77512
serjant
2002-01-31 10:15
2002.06.24
Как встроить Flash-клип в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский