Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release долго выполняется / 6 сообщений из 6, страница 1 из 1
27.07.2011, 18:06
    #37369513
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release долго выполняется
Здравствуйте!
Проблема в следующем:

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
27.07.2011, 18:22
    #37369550
Погодин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release долго выполняется
Код: 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
28.07.2011, 10:34
    #37370343
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release долго выполняется
нет не работает, в данном классе нет обработчика quit
...
Рейтинг: 0 / 0
28.07.2011, 10:45
    #37370379
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release долго выполняется
Ну, надо же иногда и самому думать. Ведь "прямым текстом" намекнули

Команда 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
28.07.2011, 11:56
    #37370578
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release долго выполняется
просто эта компонента купленная и нету в ней такого метода...
...
Рейтинг: 0 / 0
28.07.2011, 12:44
    #37370726
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Release долго выполняется
Gena87просто эта компонента купленная и нету в ней такого метода...
"Такого" - это какого? Любая компонента должна иметь метод самоуничтожения или закрытия. Особенно "купленная".
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Release долго выполняется / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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