Страница 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
Губин Игорь
Да не критикуем мы тебя! Как можно?! :P
Так смотря куда и что вставить. Я вставляю коды в тело процедуры, ты в объект...

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
Я как раз и смотрю, перечитываю, ищу и т.п., чтобы выбрать и найти наиболее простое и эффективное решение.