Из Ваших 10 строк мне надо было две последниеShur писал(а): Принцип простой:
открываешь таблицу -- появляется запись в очереди; открываешь ещё раз -- счётчик увеличивается; закрываешь таблицу -- счётчик уменьшается; закрываешь последний раз -- запись удаляется.
Действия:
- Зарегистрировать шаблон,
- в глобальных расширениях поставить галку в этом темлейте, чтобы он начал свою работу
- перекомпилировать приложение, убедиться, что оно собирается, и дополнительный код при этом генерируется сразу после открытия и после закрытия таблиц
- на своё усмотрение написать процедуру мониторинга очереди
- слегка доработать шаблон в части обработки записей очереди, чтобы, например, лочить глобальную очередь в момент её изменения.
Список открытых файлов
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
gopstop2007
- Полимат
- Сообщения: 1841
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 29 раз
- Поблагодарили: 10 раз
Re: Список открытых файлов
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Re: Список открытых файлов
это самостоятельноgopstop2007 писал(а):Из Ваших 10 строк мне надо было две последниеShur писал(а): - на своё усмотрение написать процедуру мониторинга очереди
- слегка доработать шаблон в части обработки записей очереди, чтобы, например, лочить глобальную очередь в момент её изменения.
- Губин Игорь
- Шубуршун
- Сообщения: 2675
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 5 раз
- Поблагодарили: 29 раз
Re: Список открытых файлов
Да делов там на пару минут. Даже без шаблона. Тем более, что "процедуру мониторинга очереди" в любом случае писать надо самому, т.к. никто не знает как она должна выглядеть.
Это я только кажусь дураком! На самом деле я полный идиот!
Re: Список открытых файлов
Хм... А если я ночью под одеялом в Source-процедуре файлами балуюсь? Какие там шаблоны?
Мож, попробовать подменить или перехватить Cla$file_open и Cla$file_close, поправив builtins.clw в локальном каталоге...
Мож, попробовать подменить или перехватить Cla$file_open и Cla$file_close, поправив builtins.clw в локальном каталоге...
- Губин Игорь
- Шубуршун
- Сообщения: 2675
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 5 раз
- Поблагодарили: 29 раз
Re: Список открытых файлов
Юрий, не надо так сразу и жестоко! )))
1. Если ты уж ручками делаешь open/close, то не думаю, что тебе сложно отследить открытие файлов
2. Речь идёт о явном использовании вопрошающим стандартных шаблонов
3. Лично я взял за привычку использовать даже в source-процедурах стандартные функции открытия файлов из шаблонов. Это очень упрощает жизнь, когда надо что-то сделать при ЛЮБОМ открытии ЛЮБОГО файла.
1. Если ты уж ручками делаешь open/close, то не думаю, что тебе сложно отследить открытие файлов
2. Речь идёт о явном использовании вопрошающим стандартных шаблонов
3. Лично я взял за привычку использовать даже в source-процедурах стандартные функции открытия файлов из шаблонов. Это очень упрощает жизнь, когда надо что-то сделать при ЛЮБОМ открытии ЛЮБОГО файла.
Это я только кажусь дураком! На самом деле я полный идиот!
- Губин Игорь
- Шубуршун
- Сообщения: 2675
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 5 раз
- Поблагодарили: 29 раз
Re: Список открытых файлов
НИКОГДА! Юрий, очевидно, имел ввиду, когда он полностью пишет всё ручками. Включая open(file)
Это я только кажусь дураком! На самом деле я полный идиот!
Re: Список открытых файлов
Умные вы...
А если я написал Relate:FIle.Open() - могу ли я быть уверен, что будут посчитаны ВСЕ реально открытые файлы?
Кроме того, реально файл открывается ровно один раз на тред, а в подсчётах этот фактор не учитывается, надо бы считать в каждом треде отдельно...
А если я написал Relate:FIle.Open() - могу ли я быть уверен, что будут посчитаны ВСЕ реально открытые файлы?
Кроме того, реально файл открывается ровно один раз на тред, а в подсчётах этот фактор не учитывается, надо бы считать в каждом треде отдельно...
- Губин Игорь
- Шубуршун
- Сообщения: 2675
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 5 раз
- Поблагодарили: 29 раз
Re: Список открытых файлов
Да не критикуем мы тебя! Как можно?! 
Так смотря куда и что вставить. Я вставляю коды в тело процедуры, ты в объект...
Так смотря куда и что вставить. Я вставляю коды в тело процедуры, ты в объект...
Это я только кажусь дураком! На самом деле я полный идиот!
Re: Список открытых файлов
Не в объект.
Я призывал обмануть Кларион, прописав в 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 для наблюдения за...
Я призывал обмануть Кларион, прописав в 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: Список открытых файлов
Я вот тоже об этом думал. Но тут зависит от того, что всё-таки нужно узнать у программы. Надеюсь, проблема назрела у Gopstop2007 не на ровном месте, и он хочет посчитать парность открытий-закрытий. Или где-то он пользуется source-процедурой, которая ничего не открыла, а таблицу начинает использовать. Или это не так?Yufil писал(а):Кроме того, реально файл открывается ровно один раз на тред, а в подсчётах этот фактор не учитывается, надо бы считать в каждом треде отдельно...
А вообще это вопрос того, как он дальше мой простой темплейт разовьёт. Основа есть, остальное приложится.
Последний раз редактировалось Shur 25 Июль 2013, 14:15, всего редактировалось 2 раза.
- Губин Игорь
- Шубуршун
- Сообщения: 2675
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 5 раз
- Поблагодарили: 29 раз
Re: Список открытых файлов
Ну а я использую Embed из CheckOpen. Все требуемые файлы открываются только через неё. Не надо никого обманывать, не надо (хуже налоговой!) вносить исправления в стандартные файлы...Yufil писал(а):Не в объект.
Это я только кажусь дураком! На самом деле я полный идиот!
-
gopstop2007
- Полимат
- Сообщения: 1841
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 29 раз
- Поблагодарили: 10 раз
Re: Список открытых файлов
Я как раз и смотрю, перечитываю, ищу и т.п., чтобы выбрать и найти наиболее простое и эффективное решение.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
