powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release долго выполняется
6 сообщений из 6, страница 1 из 1
Release долго выполняется
    #37369513
Gena87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Проблема в следующем:

LOCAL loXLR AS AXLR.XLReport
loXLR = CREATEOBJECT(lcNameCompanent)
RELEASE loXLR
COPY FILE &tcFileName TO &tcPathDirToCopy

не работает copy file, т.к. не успевает выполниться release
Пишет что файл не может быть скопирован (копируется файл компоненты AXLR.XLReport) т.к. нет доступа
Работает только если после команды release поставить wait timeout хоть одну секунду
Как сделать грамотно чтобы не использовать wait?
...
Рейтинг: 0 / 0
Release долго выполняется
    #37369550
Погодин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
LOCAL loXLR AS AXLR.XLReport
loXLR = CREATEOBJECT(lcNameCompanent)

&& наверное тут должно быть что то типа
loXLR.quit
&& наверное тут должно быть что то типа

RELEASE loXLR
COPY FILE &tcFileName TO &tcPathDirToCopy
...
Рейтинг: 0 / 0
Release долго выполняется
    #37370343
Gena87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет не работает, в данном классе нет обработчика quit
...
Рейтинг: 0 / 0
Release долго выполняется
    #37370379
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, надо же иногда и самому думать. Ведь "прямым текстом" намекнули

Команда Release - уничтожает ссылку на объект, которая хранится в приложении FoxPro, но не сам объект. А копирование невозможно до тех пор, пока не уничтожен сам объект, а не его ссылка.

В данном случае, Вам еще крупно повезло, что ссылка на объект была единственная и ее уничтожение автоматически запустило процесс уничтожения самого объекта, который, опять же в данном случае, FoxPro уже никак не контролирует. В общем случае, надо предварительно уничтожить объект и только потом, если необходимо, переменную, в которой хранилась ссылка на этот объект.

Следовательно, последовательность операций должна быть такая

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
* Создаем объект и записываем ссылку на него в данную переменную
loXLR = CreateObject(...)

* Выполняем метод, разрушающий (закрывающий, уничтожающий) объект
* Вам лучше знать, как этот метод называется. Обычно это нечто вроде quit(), destroy(), close() и т.п.
loXLR.(...)

* Удаляем уже не нужную переменную, в которой была записана ссылка на объект
* хотя это уже и не обязательно, поскольку сам объект уже уничтожен
release loXLR

* И копируем файл
COPY FILE (tcFileName) TO (tcPathDirToCopy)
...
Рейтинг: 0 / 0
Release долго выполняется
    #37370578
Gena87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто эта компонента купленная и нету в ней такого метода...
...
Рейтинг: 0 / 0
Release долго выполняется
    #37370726
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gena87просто эта компонента купленная и нету в ней такого метода...
"Такого" - это какого? Любая компонента должна иметь метод самоуничтожения или закрытия. Особенно "купленная".
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release долго выполняется
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]