Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Глюк ли это *.tlb??? И пару вопросов / 13 сообщений из 13, страница 1 из 1
20.02.2004, 18:10
    #32417402
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
Создаю exe-ник с оле-паблик классом...

В нем есть прога которая:
1) после закрытия создает файл с параметрами формы и всех ее компанентов
2) зачитывает и устанавливает эти параметры

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
Пример кода
 1 ) записует
Function Create_File
	Parameters my_File
	Public my_file_param
	DELE FILE my_File
	my_file_param = FCREATE(my_File)
	IF my_file_param <  0 
		my_file_param =  0 
	ENDIF
EndFunc

Function Zap_File_Form
	Parameters Chto_Zap
	IF TYPE(Chto_Zap) #  "O"  or ISNUL(&Chto_Zap) or EMPTY(my_file_param)
		RETURN
	ENDIF
	FPUTS(my_file_param,Chto_Zap)
	my_chislo = Chto_Zap + '.WindowState'
	FPUTS(my_file_param,my_param_pered)
	IF &my_chislo #  0 
		my_prim_windst = Chto_Zap + '.WindowState'
		&my_prim_windst =  0 
		my_visib = Chto_Zap + '.Visible'
		&my_visib = .T.
		&my_visib = .F.
	ENDIF
	my_chislo = Chto_Zap + '.Left'
	my_param_pered = '.Left=' + Alltrim(STR(&my_chislo))
	FPUTS(my_file_param,my_param_pered)
и т. д.
=FCLOSE(my_file_param)
EndFunc

 1 ) зачитует
Function zachit_first_file
	Lparameters my_file
	IF !FILE(my_file)
		my_form = LEFT(my_file,LEN(my_file)- 4 )
		IF TYPE(my_form) =  "O"  and !ISNUL(&my_form)
			my_fipol = my_form + '.AutoCenter=.T.'
			&my_fipol
			my_fipol = my_form + '.Resize'
			&my_fipol
			my_fipol = my_form + '.panel_standart'
			&my_fipol
			my_fipol = my_form + '.panel_format'
			&my_fipol
		ENDIF
		RETURN
	ENDIF
	Public first_zachit_file
	first_zachit_file = Fopen(my_file)
	my_fipolnit = ''
	my_form = ALLTRIM(FGETS(first_zachit_file))
	IF first_zachit_file >  0 
		DO While !Empty(my_form) AND !EOF(first_zachit_file)
			my_form = IIF(!Empty(my_fipolnit),my_fipolnit,my_form)
		    WITH &my_form
			my_fipolnit = ALLTRIM(FGETS(first_zachit_file))
			DO While LEFT(my_fipolnit, 1 ) =  "."  AND !EOF(first_zachit_file)
				 &my_fipolnit
			     my_fipolnit = ALLTRIM(FGETS(first_zachit_file))
			ENDDO
			my_form = IIF(Empty(my_fipolnit),my_fipolnit,my_form)
		    ENDWITH
		ENDDO
		=Fclose(first_zachit_file)
	ENDIF
	Release first_zachit_file
EndFunc


если запускать просто exe-ник, то работает как дети в школу...

если через:
oTest = CREATEOBJECT("my_class.my_class"),
то на выполнении команды при счытивании(2)
&my_fipolnit происходит сбой...
где например:
Код: plaintext
1.
2.
3.
4.
TYPE( "MyForm" ) =  "O"  && Текущая форма...
WITH &my_form
        my_fipolnit =  ".Width = 200 "
        &my_fipolnit
ENDWITH

и прекращается дальнейшее выпонение программы...
Что не есть хорошо...
Исключить ее тоже нельзя...
Плиз хелп...

Есть еще пару вопросов:
1)Можно ли остановить выполнение проги при возникновении ошибки
например
on error do ob_err with error()
(код программы)
on error
Надо что б зашло в обработчик ошибок выдало нужную мессагу и назад не вернулось на выполнение...

2)Можно ли узнать кем-кеми занят файл и послать им мессагу что б отдыхали...

Всем заранее спасибо...
...
Рейтинг: 0 / 0
21.02.2004, 11:37
    #32417669
ноль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
Когда-то давно сталкивался с подобной проблемой. Не помню точно, как удалось решить (не сохранились prg-шники), но помню, что загвоздка была в том, что при запуске exe-шника необходимая информация берется из "по умолчанию известных для exe-шника" библиотек типов, а при внешнем вызове CREATEOBJECT эти библы следует подшивать ЯВНО.
...
Рейтинг: 0 / 0
23.02.2004, 11:37
    #32418263
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
Ноль:
Когда-то давно сталкивался с подобной проблемой. Не помню точно, как удалось решить (не сохранились prg-шники), но помню, что загвоздка была в том, что при запуске exe-шника необходимая информация берется из "по умолчанию известных для exe-шника" библиотек типов, а при внешнем вызове CREATEOBJECT эти библы следует подшивать ЯВНО.

Так у меня всего-то одна библа vfp8r.dll
и та при установке проги засовывается в сис-папку...
...
Рейтинг: 0 / 0
23.02.2004, 22:01
    #32418688
ноль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
Скорей всего, я не прав, но все же попробуй учесть вот что:
в выражениях макроподстановки (&) везде, где в команде должна быть точка, согласно HELPу нужно ставить две точки - то есть:
если asd='file1' - имя файла,
а field1 - его поле,
то выражение file1.field1 через макроподстановку следует писать как &asd..field1
В твоем случае командная точка стоит перед Width... Попробуй задать '.Width=...' без With...Endwith, через &asd..Wdth, где asd="название нужного элемента управления".
...
Рейтинг: 0 / 0
24.02.2004, 17:32
    #32419862
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
Ноль:
Я забыл уточнить...
Что ошибка возникает только в Вин98 и ниже...
...
Рейтинг: 0 / 0
24.02.2004, 17:44
    #32419871
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
Ура...
Дасишь фантастишь...
Поменял команду и дети в школу пошли

Не правильный вариант
Код: plaintext
1.
2.
3.
4.
TYPE( "MyForm" ) =  "O"  && Текущая форма...
WITH &my_form
        my_fipolnit =  ".Width = 200 "
        &my_fipolnit &&Ошибка
ENDWITH


Правильный вариант
Код: plaintext
1.
2.
3.
TYPE( "MyForm" ) =  "O"  && Текущая форма...
     my_fipolnit = my_form +  ".Width = 200 "
     &my_fipolnit


Кто-нибудь скажет что-нибудь по-поводу моих вопросов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Есть еще пару вопросов: 
 1 )Можно ли остановить выполнение проги при возникновении ошибки 
например 
on error do ob_err with error() 
(код программы) 
on error 
Надо что б зашло в обработчик ошибок выдало нужную мессагу и назад не вернулось на выполнение... 

 2 )Можно ли узнать кем-кеми занят файл и послать им мессагу что б отдыхали... 

Всем заранее спасибо...
...
Рейтинг: 0 / 0
24.02.2004, 18:40
    #32419957
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
1) Из обработчика выходить не RETURN, а QUIT
2) Смотря какие станции и сервер
если WinNT - то можно NetFileEnum
если Win9X - то несколко сложнее
...
Рейтинг: 0 / 0
25.02.2004, 15:50
    #32421176
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
oleg_km:
1) Из обработчика выходить не RETURN, а QUIT
2) Смотря какие станции и сервер
если WinNT - то можно NetFileEnum
если Win9X - то несколко сложнее


Вы ошиблись не QUIT(Завершает текущий сеанс Лисы и возврат в операционку) а Cancel(Прекращает выполнение текущего файла программы Лисы)

А по-поводу второго вопроса мне желательно примерчик(плиз), у кого он есть, который работает под все Винды

Заранее благодарен...
...
Рейтинг: 0 / 0
25.02.2004, 18:42
    #32421531
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
Сам спросил, сам ответил
1) я просто не совсем понял, что значит остановить, потому-что остановить есть команда SUSPEND. Поэтому правильный ответ: в зависимости от требований - CANCEL или QUIT
2) для всех винд одного решения не будет, потому как API разное в WinNT и Win9X, причем, если в WinNT (2000, XP) все работает, документировано и пр., то в Win9X сплошные пляски с бубном: одна функция работает, другая не работает, режим Управления доступом нужно учитывать. Если под Win2000 Server (любые станции) нужно решение - пиши намылю
то же касательно Net Send, полностью это работает в WinNT
...
Рейтинг: 0 / 0
26.02.2004, 11:29
    #32422117
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
leg_km:
Сам спросил, сам ответил

Да просто все как обычно...
Все надо было на вчера...
Некогда даже хелп почитать...
Или мессагу в форум кинуть...(про Cancel как-то вспомнилось)
Особенно если надо поддерживать несколько языков программирования...
И везде свалы {:-)}...

2) для всех винд одного решения не будет, потому как API разное в WinNT и Win9X, причем, если в WinNT (2000, XP) все работает, документировано и пр., то в Win9X сплошные пляски с бубном: одна функция работает, другая не работает, режим Управления доступом нужно учитывать. Если под Win2000 Server (любые станции) нужно решение - пиши намылю
то же касательно Net Send, полностью это работает в WinNT


Мне бы пример для работы под любой Win-ой...
Если есть пришли на ignoring@ukrpost.net

Заранее благодарен...
...
Рейтинг: 0 / 0
26.02.2004, 21:59
    #32423436
ноль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
Я рад, что у вас получилось с "правильным" вариантом - он как раз и нейтрализует то, что я вам писал насчет точек в макроподстановке - в вашем "неправильном" варианте (если его переписать без WITH...ENDWITH) соединяющая точка находилась между макроподстановочной и явно задаваемой частью команды, а в этом случае, согласно руководства, точка должна заменяться на две (..). В вашем "правильном" варианте вы просто внесли точку внутрь макроподстановки, поэтому все и заработало.
...
Рейтинг: 0 / 0
27.02.2004, 17:36
    #32424796
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
leg_km:

Спасибо за примерчик...

Я написал свои библы на Дельфине... создают тхт-файл с директорией и пользователем занявшим там файл...
Им пофинту... Вин98-2000(не администратор)...
Главное вызвать правильную библу polzovNT или polzov98

Есть еще вопросик:
Как можно разослать мессагу всем пользователям имена компов которых а получил...
Например с 2000 на 98, 2000, ХР
Например с 98 на 98, 2000, ХР и т. д.
Буду благодарен за пример на лисе под все версии Винды...

Заранее спасибо...
...
Рейтинг: 0 / 0
27.02.2004, 20:06
    #32424952
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк ли это *.tlb??? И пару вопросов
С Net Messanger сложнее, ведь API есть только на отправку, а принимать будет сам Windows. У меня используется своя программа сообщений, запускается на всех компьютерах сети, есть свой протокол обмена данными, обозревания пользователей и пр. В основе - WinSock ActiveX. Мне кажется - это проще, чем вникать в работу Net Messanger (WinPopup в Win9X)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Глюк ли это *.tlb??? И пару вопросов / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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