Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.009 c