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

Вниз

initialization ???   Найти похожие ветки 

 
thick   (2003-01-30 16:03) [0]

Есть проект (порядка 200 units)

Delphi при обращении к ф-ции юнита не проходит секцию initialization
Помогает только полный rebuild всего проекта


 
Reindeer Moss Eater   (2003-01-30 16:09) [1]

Delphi при обращении к ф-ции юнита не проходит секцию initialization

А должно разве?


 
Digitman ©   (2003-01-30 16:11) [2]

что-то не очень понятно)..

т.е. делаешь какие-то изменения в тексте любого модуля, выполняешь compile project (компилируется только измененный модуль + сборка) и в результате секция initialization одного из модулей не получает управления ? и, если следом же выполнить build project, все в порядке становится ? Так ?


 
thick   (2003-01-30 16:18) [3]

2 Digitman да имеено так


 
Digitman ©   (2003-01-30 16:21) [4]

а вообще - на основании чего ты сделал умозаключение, что секция не получает управления ? приведи код секции и последовательность действий/рассуждений, приведших тебя к такому нонсенсу..

и, кстати, это не package-проект ?


 
Digitman ©   (2003-01-30 16:23) [5]

и - опять же - какое отношение к форуму "Базам данных" имеет совершенно общий вопрос ?


 
Reindeer Moss Eater   (2003-01-30 16:23) [6]

при обращении к ф-ции юнита не проходит секцию initialization

Ты ждешь "попадания" в initialization при каждом вызове функции из юнита?


 
thick   (2003-01-30 16:25) [7]

unit Unit10;

...

implementation

var
ValList :TStringList;

function GetValue() :TStringList;
begin
GetValue:=ValList;
end;
...

initialization
ValList := TStringList.Create;
finalization
ValList.Free;

end;


 
thick   (2003-01-30 16:26) [8]

Проверял по breakpoint


 
Digitman ©   (2003-01-30 16:28) [9]

ну и ?

в run-time при обращении к ф-ции Unit10.GetValue() ты получаешь AV ? или - как это проявляется в run-time/debug-time ?


 
Reindeer Moss Eater   (2003-01-30 16:29) [10]

Ты все таки ждешь "попадания" в initialization при каждом вызове функции из юнита.
Этого не будет.


 
Digitman ©   (2003-01-30 16:30) [11]

а предыдущий модуль (в порядке их перечисления в uses гл.файла проекта) получает управление в этой секции ? вообще - хоть в какои-либо модуле ловится брейк-пойнт в этой секции ?


 
Digitman ©   (2003-01-30 16:34) [12]

тут вот <Reindeer Moss Eater> намекает на самое страшное для тебя - непонимание процесса инициализации Делфи-приложения)

на самом деле - поставь брейкпойнт в этой секции, потом уж стартуй приложение ! поймаешь скорей всего, причем - однократно !)


 
Reindeer Moss Eater   (2003-01-30 16:36) [13]

Я не намекаю, я лишь провел телепатический анализ текста GetValue() и решил, что автору лень было самому вызывать конструктор


 
REA ©   (2003-01-30 16:46) [14]

А у меня если в initialization стояло создание объекта наследника TObject и при выходе глючил. Где прикол - так и не понял. Унаследовал от TComponent и присобачил к Application - глючить перестало. Странно все это...


 
Digitman ©   (2003-01-30 16:48) [15]


> REA


Уж больно часто у тебя "глючит" то там то сям, я заметил)


 
thick   (2003-01-30 16:49) [16]

В debug-time в breakpoint попадает в GetValue раньше чем в секцию initialization. Соотв. GetValue возвр nil


 
Digitman ©   (2003-01-30 16:54) [17]

Не верю !

The initialization sections of units used by a client are executed in the order in which the units appear in the client’s uses clause.

Эти условия ты контролируешь ?


 
thick   (2003-01-30 17:08) [18]

Я тоже не верил, но факт есть факт


 
Reindeer Moss Eater   (2003-01-30 17:12) [19]

Оптический обман это, а не факт.


 
Игорь Шевченко ©   (2003-01-30 17:13) [20]

thick (30.01.03 16:49)
> В debug-time в breakpoint попадает в GetValue раньше чем
> в секцию initialization. Соотв. GetValue возвр nil

А не может быть такого, что где-то секции initialization другого unit"а вызывается эта ф-ция GetValue ? View|Call stack обычно помогает


 
han_malign ©   (2003-01-30 17:13) [21]

Добавь модуль в uses в dpr, проблемы должны пропасть.
Вероятнее всего модуль подключается в Implementation (циркулярное подключение?), да и с проверкой версий DCU - Delphi всегда подглючивал(при изменинии настроек в Project->Options...->Compiler - сплошь и рядом надо Build делать)


 
REA ©   (2003-01-30 17:24) [22]

2Digitman
>Уж больно часто у тебя "глючит" то там то сям, я заметил)

На роль человека, который не делает ошибок, не претендую (тем более, что большинство из них не мои). Вместо того, чтобы разбираться в дебрях реализации Initialization потратил время на разработку. Возможно я неправ, но как найти ошибку, на которой не останавливается отладчик?. Отрезать 99% программы и посмотреть что будет? А вот еще что - если BPL используется в программе и другой BPL, которая динамически грузится из программы, то Initialization вызывается 2 раза или 1? Наверно 1.


 
Reindeer Moss Eater   (2003-01-30 17:28) [23]

Один раз на процесс


 
Digitman ©   (2003-01-30 17:31) [24]


> если BPL используется в программе и другой BPL, которая
> динамически грузится из программы, то Initialization вызывается
> 2 раза или 1? Наверно 1.


Разумеется - 1 !


> Вместо того, чтобы разбираться в дебрях реализации >Initialization
> потратил время на разработку


Не думаю, что это нормально в случае, когда "глюк" за "глюком".
А твой НИК, извини уж, но в последнее время у меня ассоциируется в основном с какими-то там "глюками".
Нужно сесть и выяснить, чего ты не понимаешь. До тонкостей. Иначе вся твоя "разработка" рано или поздно пойдет коту под хвост


 
thick   (2003-01-30 17:37) [25]

2 Игорь Шевченко
Большое пасиба. Помогло


 
REA ©   (2003-01-30 17:37) [26]

Глюки есть постоянный процент от работы - много работы - много глюков. У меня есть тестеры, которые их ловят. До тонкостей разбираться во всем некогда, но по возможности разбираюсь. У каждого человека свои ограниченные способности. И вообще топик не про меня. Кстати программы мои работают более чем в 300 местах круглый год в режиме RealTime без перерыва на самом разном железе - и никто не жалуется. Ну почти :)


 
han_malign ©   (2003-01-30 17:40) [27]

> Возможно я неправ, но как найти ошибку, на которой не останавливается отладчик?
- нажимаешь F7, и в первом begin-е (в dpr), проваливаешься во все секци initialization, соответсвенно на end - finalization. Если хочешь пробежаться по VCL, то включи Project Option->Compiler->Use debug DCUs...
З.Ы. И при отладке надо отключать оптимизацию, а если ты про те ошибки которые из ядра сыпются, так нужно внимательнее за инициализацией буферов следить, и думать, думать, ду-zz-zzZ-ZZZ


 
REA ©   (2003-01-30 17:43) [28]

Вывалиливался при выходе, причем лепил ошибку (Run-time), а отладчик спокойненько работал (т.е. Debug DCU не поможет), как будто ее и не было. Налицо ошибка в распределении памяти или что-то типа того, но сколько не думал - не нашел.


 
Digitman ©   (2003-01-30 17:45) [29]


> REA


знаешь ли, при всяких там "кстати" мериться с тобой "крутизной" я не собираюсь, но не припомню случая, когда какой-то "глюк", который таковым казался мне изначально, в конечном итоге не исчез после целевого поиска и элементарно внимательного изучения найденной док-ции по сабжу "глюка"


 
REA ©   (2003-01-30 17:49) [30]

Ладно - специально для тебя завтра найду (если он сам еще не пропал). Тут проблема не в том, чтобы глюк устранить - я его и так устранил, а понять причину глюка. Иногда это бывает сложно просто потому что например с ассемблером я давно не работал, ядро windows плохо знаю ну и т.п.


 
Digitman ©   (2003-01-30 17:54) [31]


> REA


"специально для меня" не стОит этим заниматься - для успешной проф.деятельности на программистском поприще глубокие знания нужны тебе в 1-ю очередь, а обо мне незаботься)

если у тебя есть желание ДЕТАЛЬНО разобраться в каком-то "глюке" (а не махнуть на него рукой в очер.раз) - изволь, я с удовольствием помогу в пределах своей компетенции

но вот пока я такого желания у тебя, увы, не заметил .. а это печально(


 
REA ©   (2003-01-30 17:59) [32]

Ксати - нет желания посмотреть на результат (правда пока бету)? Компонент печати двухуровневый - певый уровень может применяться в разных программах, а второй узкоспециальный.

Я буду стараться. Правда правда. Но как ни странно целью работы является зарабатывание денег даже в ущерб совершенству и вот это как раз и печально.



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

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

Наверх




Память: 0.54 MB
Время: 0.027 c
4-29154
down
2002-12-26 19:21
2003.02.10
Как отследить момент подключения к общему (shared) ресурсу?


7-29121
andreyagsoft
2002-12-06 10:36
2003.02.10
LPT


7-29135
Konstantin
2002-12-07 15:10
2003.02.10
как получить уникальное исмя файла


3-28625
sterran
2003-01-23 10:56
2003.02.10
Реиндексация dBase


3-28676
Соловьев
2003-01-24 14:40
2003.02.10
Почему не работает UPPER?