Страница 2 из 2
Re: Список открытых файлов
Добавлено: 24 Июль 2013, 12:22
gopstop2007
Shur писал(а):
Принцип простой:
открываешь таблицу -- появляется запись в очереди; открываешь ещё раз -- счётчик увеличивается; закрываешь таблицу -- счётчик уменьшается; закрываешь последний раз -- запись удаляется.
Действия:
- Зарегистрировать шаблон,
- в глобальных расширениях поставить галку в этом темлейте, чтобы он начал свою работу
- перекомпилировать приложение, убедиться, что оно собирается, и дополнительный код при этом генерируется сразу после открытия и после закрытия таблиц
- на своё усмотрение написать процедуру мониторинга очереди
- слегка доработать шаблон в части обработки записей очереди, чтобы, например, лочить глобальную очередь в момент её изменения.
Из Ваших 10 строк мне надо было две последние

Re: Список открытых файлов
Добавлено: 24 Июль 2013, 14:58
Shur
gopstop2007 писал(а):Shur писал(а):
- на своё усмотрение написать процедуру мониторинга очереди
- слегка доработать шаблон в части обработки записей очереди, чтобы, например, лочить глобальную очередь в момент её изменения.
Из Ваших 10 строк мне надо было две последние

это самостоятельно
Re: Список открытых файлов
Добавлено: 24 Июль 2013, 15:03
Губин Игорь
Да делов там на пару минут. Даже без шаблона. Тем более, что "процедуру мониторинга очереди" в любом случае писать надо самому, т.к. никто не знает как она должна выглядеть.
Re: Список открытых файлов
Добавлено: 24 Июль 2013, 15:51
Yufil
Хм... А если я ночью под одеялом в Source-процедуре файлами балуюсь? Какие там шаблоны?
Мож, попробовать подменить или перехватить Cla$file_open и Cla$file_close, поправив builtins.clw в локальном каталоге...
Re: Список открытых файлов
Добавлено: 24 Июль 2013, 16:22
Губин Игорь
Юрий, не надо так сразу и жестоко! )))
1. Если ты уж ручками делаешь open/close, то не думаю, что тебе сложно отследить открытие файлов

2. Речь идёт о явном использовании вопрошающим стандартных шаблонов
3. Лично я взял за привычку использовать даже в source-процедурах стандартные функции открытия файлов из шаблонов. Это очень упрощает жизнь, когда надо что-то сделать при ЛЮБОМ открытии ЛЮБОГО файла.
Re: Список открытых файлов
Добавлено: 24 Июль 2013, 16:50
Дед Пахом
А когда это в Source-процедурах запретили шаблоны?
Re: Список открытых файлов
Добавлено: 24 Июль 2013, 17:01
Губин Игорь
НИКОГДА! Юрий, очевидно, имел ввиду, когда он полностью пишет всё ручками. Включая open(file)
Re: Список открытых файлов
Добавлено: 24 Июль 2013, 17:10
Дед Пахом
Ну ручками так ручками. Я всё же предпочитаю карандаши.
Re: Список открытых файлов
Добавлено: 25 Июль 2013, 12:16
Yufil
Умные вы...
А если я написал Relate:FIle.Open() - могу ли я быть уверен, что будут посчитаны ВСЕ реально открытые файлы?
Кроме того, реально файл открывается ровно один раз на тред, а в подсчётах этот фактор не учитывается, надо бы считать в каждом треде отдельно...
Re: Список открытых файлов
Добавлено: 25 Июль 2013, 13:03
Губин Игорь
Да не критикуем мы тебя! Как можно?!

Так смотря куда и что вставить. Я вставляю коды в тело процедуры, ты в объект...
Re: Список открытых файлов
Добавлено: 25 Июль 2013, 13:50
Yufil
Не в объект.
Я призывал обмануть Кларион, прописав в Builtins.clw что-то типа
OPEN(FILE,UNSIGNED = 022H),NAME('TraceFILE_OPEN')
TRUEOPEN(FILE,UNSIGNED = 022H),NAME('Cla$FILE_OPEN')
CLOSE(FILE),NAME('TraceFILE_CLOSE')
TRUECLOSE(FILE),NAME('Cla$FILE_CLOSE')
и
TraceFile_Open Procedure(File,Mode)
Code
!.... Перед открытием ....
! Полезную информацию о файле извлекаем из Prop:Driver, Prop:Owner, Prop:Name и т д
TrueOpen(File,Mode)
!.... После открытия
Return
TraceFile_Close Procedure(File)
Code
!.... Перед закрытием ....
TrueClose(File,Mode)
!.... После закрытия
Return
Ну и поюзать Debug API из FreeABC и прогу DbgView от Sysinternals для наблюдения за...
Re: Список открытых файлов
Добавлено: 25 Июль 2013, 14:01
Shur
Yufil писал(а):Кроме того, реально файл открывается ровно один раз на тред, а в подсчётах этот фактор не учитывается, надо бы считать в каждом треде отдельно...
Я вот тоже об этом думал. Но тут зависит от того, что всё-таки нужно узнать у программы. Надеюсь, проблема назрела у Gopstop2007 не на ровном месте, и он хочет посчитать парность открытий-закрытий. Или где-то он пользуется source-процедурой, которая ничего не открыла, а таблицу начинает использовать. Или это не так?
А вообще это вопрос того, как он дальше мой простой темплейт разовьёт. Основа есть, остальное приложится.
Re: Список открытых файлов
Добавлено: 25 Июль 2013, 14:08
Губин Игорь
Yufil писал(а):Не в объект.
Ну а я использую Embed из CheckOpen. Все требуемые файлы открываются только через неё. Не надо никого обманывать, не надо (хуже налоговой!) вносить исправления в стандартные файлы...
Re: Список открытых файлов
Добавлено: 26 Июль 2013, 0:36
gopstop2007
Я как раз и смотрю, перечитываю, ищу и т.п., чтобы выбрать и найти наиболее простое и эффективное решение.