Список открытых файлов
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Полимат
- Сообщения: 1810
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 24 раза
- Поблагодарили: 10 раз
Список открытых файлов
Необходимо реалтайме видеть список открытых файлов, в том числе алиасов, если возможно. Если готовые примеры или шаблоны, заранее спасибо.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Список открытых файлов
Для чего, суть задачи какая?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- Полимат
- Сообщения: 1810
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 24 раза
- Поблагодарили: 10 раз
Re: Список открытых файлов
Есть программа (немаленькая), в которой некоторые явные + скрытые процессы (процедуры) могут пересекаться, + куча алиасов на файл. Хочется запустить tools-окно с мониторингом открытых-используемых файлов и увидеть то что нужно. 

“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Список открытых файлов
Property на чтение статуса файла не помню что бы было. Без этого придется во все места открытия и закрытия вставлять свой код и в глобальном классе/переменных собирать информацию о количестве открытий/закрытий файлов и т.д.
Если используется только FileManager то все проще тем что можно его наследовать и изменить.
Как то так. Народ поправит надеюсь...
Если используется только FileManager то все проще тем что можно его наследовать и изменить.
Как то так. Народ поправит надеюсь...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: Список открытых файлов
Можно ещё FileCallback перехватывать, тогда все стандартные OPEN()/CLOSE() доступны, правда насчёт алиасов не уверен.
Если нужна отдельная утилита мониторинга, то это всё надо из основной программы в табличку БД писать, а в мониторе её периодически опрашивать.
Есть встроенная функция STATUS(FILE), но это вроде не то по условию задачи.
Если нужна отдельная утилита мониторинга, то это всё надо из основной программы в табличку БД писать, а в мониторе её периодически опрашивать.
Есть встроенная функция STATUS(FILE), но это вроде не то по условию задачи.
С уважением, ДП
Re: Список открытых файлов
Простите, не догоняю, что же всё-таки хочется увидеть? Что беспокоит-то? Блокировки какие или что?gopstop2007 писал(а):Хочется запустить tools-окно с мониторингом открытых-используемых файлов и увидеть то что нужно.
Может открыть все таблицы-файлы сразу при старте программы и снять проблему разом (мол типа всё открыто, мониторить нечего)?
Какой в программе используется драйвер БД? Темплейты какие? Программа какая? Если многопользовательская и надо мониторить по всем юзерам, то надо сохранять в БД, если однопользовательская, то глобальной очереди достаточно. Интересует факт открыт/закрыт или необходим счётчик?
Уточните всё это.
Последний раз редактировалось Shur 22 Июль 2013, 12:09, всего редактировалось 1 раз.
-
- Полимат
- Сообщения: 1810
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 24 раза
- Поблагодарили: 10 раз
Re: Список открытых файлов
Вроде просто, а как сложноAdmin писал(а):Property на чтение статуса файла не помню что бы было. Без этого придется во все места открытия и закрытия вставлять свой код и в глобальном классе/переменных собирать информацию о количестве открытий/закрытий файлов и т.д.
Если используется только FileManager то все проще тем что можно его наследовать и изменить.
Как то так. Народ поправит надеюсь...

Спасибо, посмотрел - FileCallback, пригодится. Про STATUS знал, думал еще кто чего подскажет. Коллективный разумДед Пахом писал(а):Можно ещё FileCallback перехватывать, тогда все стандартные OPEN()/CLOSE() доступны, правда насчёт алиасов не уверен.
Если нужна отдельная утилита мониторинга, то это всё надо из основной программы в табличку БД писать, а в мониторе её периодически опрашивать.
Есть встроенная функция STATUS(FILE), но это вроде не то по условию задачи.

Старая программа, писалась периодически, хочется упорядочить "разросшийся" файл диктонари(DCT).Shur писал(а):Простите, не догоняю, что же всё-таки хочется увидеть? Что беспокоит-то? Блокировки какие или что?
Можно, если бы периодически файлы не пересоздавались, апендились и прочее.Shur писал(а):Может открыть все таблицы-файлы сразу при старте программы и снять проблему разом (мол типа всё открыто, мониторить нечего)?
TPS + ODBC, мониторинг локально, ABC.Shur писал(а):Какой в программе используется драйвер БД? Программа какая? Если многопользовательская и надо мониторить по всем юзерам, то надо сохранять в БД, если однопользовательская, то глобальной очереди достаточно. Темплейты какие? Уточните всё это.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Губин Игорь
- Шубуршун
- Сообщения: 2584
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
Re: Список открытых файлов
Вставьте в эмбед стандартной процедуры открытия файла некий код отслеживания.
Это я только кажусь дураком! На самом деле я полный идиот!
Re: Список открытых файлов
Всё равно не ясно. Как это может повлиять? Ну ты увидишь, что таблица открылась, потом она закрылась. Какой из этого вывод?gopstop2007 писал(а):Старая программа, писалась периодически, хочется упорядочить "разросшийся" файл диктонари(DCT).
Или уже есть кандидаты на уничтожение?
Пардон, вот здесь ещё...Shur писал(а):Интересует факт открыт/закрыт или необходим счётчик?
-
- Полимат
- Сообщения: 1810
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 24 раза
- Поблагодарили: 10 раз
Re: Список открытых файлов
Когда делалось изначально, сильно не заморачивался с файлами, для параллельных процессов(процедур) создавал алиасы, если были сомнения насчет их "пересечения". Так как многие процессы работают параллельно по таймеру, по "запросу извне", четко определить "загруженность" файлов для меня тяжеловатоShur писал(а):Всё равно не ясно. Как это может повлиять? Ну ты увидишь, что таблица открылась, потом она закрылась. Какой из этого вывод?gopstop2007 писал(а):Старая программа, писалась периодически, хочется упорядочить "разросшийся" файл диктонари(DCT).
Или уже есть кандидаты на уничтожение?Пардон, вот здесь ещё...Shur писал(а):Интересует факт открыт/закрыт или необходим счётчик?

“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Re: Список открытых файлов
Что до сабжа, то здесь мог бы помочь банальный профайл таблиц.
Если идея создания очереди превалирует, то можно смотреть в сторону написания темплейта на открытие-закрытие таблиц. Жалко только, что он будет одноразовый, сиюминутный. Поэтому мысль идёт дальше.
Если идея создания очереди превалирует, то можно смотреть в сторону написания темплейта на открытие-закрытие таблиц. Жалко только, что он будет одноразовый, сиюминутный. Поэтому мысль идёт дальше.
gopstop2007 писал(а):Когда делалось изначально, сильно не заморачивался с файлами, для параллельных процессов(процедур) создавал алиасы, если были сомнения насчет их "пересечения".
Раз всё так запущено, то я бы вернулся к идее открытия всех файлов разом. Append здесь никоим образом не мешает. А вот что с пересозданием файлов? Как сейчас оно происходит? Может нацелиться на переделку этого?gopstop2007 писал(а):Можно, если бы периодически файлы не пересоздавались, апендились и прочее.Shur писал(а): Может открыть все таблицы-файлы сразу при старте программы и снять проблему разом (мол типа всё открыто, мониторить нечего)?
-
- Полимат
- Сообщения: 1810
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 24 раза
- Поблагодарили: 10 раз
Re: Список открытых файлов
Эх, вот так банально и серпом по я...мShur писал(а):Что до сабжа, то здесь мог бы помочь банальный профайл таблиц.

“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Re: Список открытых файлов
Вот наспех соструганный темплейт. Работу с самой очередью не проверял, возможно, что уже потерял навыки и что-то не учёл.
- Вложения
-
- ShurOpenClose.zip
- (1.32 КБ) 170 скачиваний
-
- Полимат
- Сообщения: 1810
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 24 раза
- Поблагодарили: 10 раз
Re: Список открытых файлов
Спасибо огромное, и как этим воспользоваться? Принцип шаблона?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Re: Список открытых файлов
М-м... Как бы так помягче...gopstop2007 писал(а):Спасибо огромное, и как этим воспользоваться? Принцип шаблона?

Принцип простой:
открываешь таблицу -- появляется запись в очереди; открываешь ещё раз -- счётчик увеличивается; закрываешь таблицу -- счётчик уменьшается; закрываешь последний раз -- запись удаляется.
Действия:
- Зарегистрировать шаблон,
- в глобальных расширениях поставить галку в этом темплейте, чтобы он начал свою работу
- перекомпилировать приложение, убедиться, что оно собирается, и дополнительный код при этом генерируется сразу после открытия и после закрытия таблиц
- на своё усмотрение написать процедуру мониторинга очереди
- слегка доработать шаблон в части обработки записей очереди, чтобы, например, лочить глобальную очередь в момент её изменения.
Последний раз редактировалось Shur 24 Июль 2013, 15:03, всего редактировалось 1 раз.