powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отловить ошибку (Или что то вроде ...)
6 сообщений из 6, страница 1 из 1
Отловить ошибку (Или что то вроде ...)
    #32473668
M.I.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть программа которая выводит данные в Excel.
Проблема состоит в том что если выполнение кода не доходит до строчек

mprint.visible=.t.
mprint.activeworkbook.save

то Excel зависает в памяти машины (и приследующем открытии файла спрашивает "заменить ли существующий файл *.xlс")
(очень мешает при отладке проги)

Вопросы
1.Как избежать такой проблемы (выше сказаной)
2.Как выгрузить Excel из памяти (???)
3.Как перехватить ход программы если возникла кокая либо ошибка
...
Рейтинг: 0 / 0
Отловить ошибку (Или что то вроде ...)
    #32473766
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотря, как создавать объект Excel.
Я делаю так.
Создаю класс на основе Custom и в нем работатю с Excel (класс содержит объект oExcelApp).
Код: plaintext
This.oExcelApp = CreateObject( "Excel.Application" )

Класс легко цепляется к объекту _Screen (AddObject).
В методе Destroy класса прописать выход из Excel (_Screen.oExcel.oExcelApp.Quit).
При закрытии программы (по кнопке "Стоп" в обработчике ошибок, по On ShutDown, по штатному выходу) уничтожать все объекты _Screen (RemoveObject).
...
Рейтинг: 0 / 0
Отловить ошибку (Или что то вроде ...)
    #32473771
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А перехват программы по какой-либо ошибке это On Error Do ErrorHandler With ...
...
Рейтинг: 0 / 0
Отловить ошибку (Или что то вроде ...)
    #32473783
M.I.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<<<<<

Смотря, как создавать объект Excel.
Я делаю так.
Создаю класс на основе Custom и в нем работатю с Excel (класс содержит объект oExcelApp).


This.oExcelApp = CreateObject("Excel.Application")

Класс легко цепляется к объекту _Screen (AddObject).
В методе Destroy класса прописать выход из Excel (_Screen.oExcel.oExcelApp.Quit).
При закрытии программы (по кнопке "Стоп" в обработчике ошибок, по On ShutDown, по штатному выходу) уничтожать все объекты _Screen (RemoveObject).

>>>



Это пример кода

куда вставлять This.oExcelApp = CreateObject("Excel.Application")

Я не когда не работал с класами



mprint=createobject("excel.application")
name_xls="c:\jurnal6\bufer.xls"
mprint.workbooks.open(name_xls)
mprint.rows("4:1500").delete

DO WHILE NOT EOF()

with mprint

.cells(str,2).value=bufer.bs
.cells(str,3).value=bufer.nn
.cells(str,4).value=nc.nm
.cells(str,5).value=bufer.cena
.cells(str,6).value=bufer.kl
.cells(str,7).value=nsi.nm
.cells(str,8).value=bufer.dsh
.cells(str,9).value=a1
ENDWITH

skip
str=str+1
ENDDO



mprint.visible=.t.

mprint.cells(3,1).select

mprint.activeworkbook.save
...
Рейтинг: 0 / 0
Отловить ошибку (Или что то вроде ...)
    #32474070
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSDN по Define Class.
Но, вкратце, так:

class_libr.PRG
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Define Class cusExcelApp As Custom
oExcelApp = .F.
Function Init
This.oExcelApp = CreateObject( "Excel.Application" )
EndFunc
Function Destroy
This.oExcelApp.Quit
EndFunc
EndDefine

Перед запуском подключаем файл с классом.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Set Procedure To class_libr.PRG
_Screen.AddObject( "oExcel" ,  "cusExcelApp" )
name_xls= "c:\jurnal6\bufer.xls" 
_Screen.oExcel.oExcelApp.workbooks.open(name_xls)
_Screen.oExcel.oExcelApp.rows( "4 : 1500 ").delete
... и т.д.
_Screen.RemoveObject( "oExcel" )

Процедура выхода (вешай на все, что может выйти из программы)
Код: plaintext
1.
2.
3.
For i = _Screen.ControlCount To  1  Step - 1 
_Screen.RemoveObject(_Screen.Controls(i).Name)
EndFor
...
Рейтинг: 0 / 0
Отловить ошибку (Или что то вроде ...)
    #32474074
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забудь выставить
Код: plaintext
_Screen.oExcel.oExcelApp.DisplayAlerts = .F.
, иначе зависнет при выходе с запросом на сохранение файла.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отловить ошибку (Или что то вроде ...)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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