Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-28884
REA
2003-01-30 17:18
2003.02.10
Видимость функций


1-28704
MixerPro
2003-01-30 17:12
2003.02.10
Поиск в TreeView


1-28866
BLooDMaN
2003-01-29 23:28
2003.02.10
Как отловить нажатие F2 в собственной программе??


1-28859
Dr.Karter
2003-01-21 10:29
2003.02.10
DrawGrid - одни мучения и часы проведенные в пустую


3-28655
Ihor Osov'yak
2003-01-22 16:29
2003.02.10
MSSQL: READTEXT в локальную переменную





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский